{
  "schema_version": "gadalnya.analytics-recipients.v6",
  "consent_version": "gadalnya.analytics-consent.2026-09-27.v6",
  "scope": "optional_public_measurement_and_server_acknowledged_business_events",
  "counter_id": 112282395,
  "controller": {
    "name": "ИП Москвин Антон Игоревич",
    "inn": "502986761445",
    "ogrnip": "326508100423280",
    "contact": "privacy@избагадальня.рф"
  },
  "recipient": {
    "name": "ООО «ЯНДЕКС»",
    "address": "119021, Россия, Москва, ул. Льва Толстого, д. 16",
    "service": "Яндекс Метрика"
  },
  "allowed_clean_paths": [
    "/",
    "/rasklady/odna-karta/",
    "/rasklady/tri-karty/",
    "/rasklady/keltskiy-krest/",
    "/temy/lyubov/",
    "/temy/budushchee/",
    "/temy/semya/",
    "/temy/rabota/",
    "/znacheniya-kart/",
    "/kamni/",
    "/runy/",
    "/kamni-dlya-run/",
    "/cards/",
    "/cards/major-fool/",
    "/cards/major-magician/",
    "/cards/major-high-priestess/",
    "/cards/major-empress/",
    "/cards/major-emperor/",
    "/cards/major-hierophant/",
    "/cards/major-lovers/",
    "/cards/major-chariot/",
    "/cards/major-strength/",
    "/cards/major-hermit/",
    "/cards/major-wheel-of-fortune/",
    "/cards/major-justice/",
    "/cards/major-hanged-man/",
    "/cards/major-death/",
    "/cards/major-temperance/",
    "/cards/major-devil/",
    "/cards/major-tower/",
    "/cards/major-star/",
    "/cards/major-moon/",
    "/cards/major-sun/",
    "/cards/major-judgement/",
    "/cards/major-world/",
    "/cards/wands-ace/",
    "/cards/wands-two/",
    "/cards/wands-three/",
    "/cards/wands-four/",
    "/cards/wands-five/",
    "/cards/wands-six/",
    "/cards/wands-seven/",
    "/cards/wands-eight/",
    "/cards/wands-nine/",
    "/cards/wands-ten/",
    "/cards/wands-page/",
    "/cards/wands-knight/",
    "/cards/wands-queen/",
    "/cards/wands-king/",
    "/cards/cups-ace/",
    "/cards/cups-two/",
    "/cards/cups-three/",
    "/cards/cups-four/",
    "/cards/cups-five/",
    "/cards/cups-six/",
    "/cards/cups-seven/",
    "/cards/cups-eight/",
    "/cards/cups-nine/",
    "/cards/cups-ten/",
    "/cards/cups-page/",
    "/cards/cups-knight/",
    "/cards/cups-queen/",
    "/cards/cups-king/",
    "/cards/swords-ace/",
    "/cards/swords-two/",
    "/cards/swords-three/",
    "/cards/swords-four/",
    "/cards/swords-five/",
    "/cards/swords-six/",
    "/cards/swords-seven/",
    "/cards/swords-eight/",
    "/cards/swords-nine/",
    "/cards/swords-ten/",
    "/cards/swords-page/",
    "/cards/swords-knight/",
    "/cards/swords-queen/",
    "/cards/swords-king/",
    "/cards/pentacles-ace/",
    "/cards/pentacles-two/",
    "/cards/pentacles-three/",
    "/cards/pentacles-four/",
    "/cards/pentacles-five/",
    "/cards/pentacles-six/",
    "/cards/pentacles-seven/",
    "/cards/pentacles-eight/",
    "/cards/pentacles-nine/",
    "/cards/pentacles-ten/",
    "/cards/pentacles-page/",
    "/cards/pentacles-knight/",
    "/cards/pentacles-queen/",
    "/cards/pentacles-king/"
  ],
  "allowed_campaign_query": {
    "keys": [
      "utm_source",
      "utm_medium",
      "utm_campaign",
      "utm_content",
      "utm_term",
      "yclid",
      "gclid",
      "ysclid"
    ],
    "value_pattern": "^[A-Za-z0-9][A-Za-z0-9._~-]*$",
    "max_value_length": 128,
    "rules": [
      "each key may occur at most once",
      "empty values are rejected",
      "any unlisted key rejects the whole page URL",
      "any fragment rejects the whole page URL"
    ],
    "scope": "Strict parent-page tracker. The isolated frame uses business_query_rules instead."
  },
  "data_categories": [
    "approved public acquisition page path and only sanitized allowlisted campaign query parameters when present; fragments are never included",
    "fixed editorial page title",
    "external referrer origin or approved internal page path; internal query and fragment are never included",
    "request time, visit duration, and technical browser or device data",
    "network IP address received by Yandex",
    "Yandex Metrica cookie identifiers after consent",
    "random consent-scoped analytics UserID unrelated to account, contact, or order",
    "Webvisor 2.0 snapshots and interaction events on an approved public page; snapshots may contain fixed destination href values already rendered by the site, including fixed source, spread, or preset parameters",
    "click-map coordinates and link transitions on an approved public page; link maps may contain fixed destination href values already rendered by the site",
    "standard auto-goal signals recognized by Yandex on an approved clean public page",
    "fixed reading_entry_click goal with an empty payload after an opted-in clean acquisition-to-reading or Focus click",
    "fixed reading_offer_click goal with an empty payload only after a consented click on the final homepage reading CTA",
    "fixed purchase_confirmed goal with an empty payload after live server-confirmed payment",
    "fixed exercise_started and first_lesson_completed goals with empty payloads on six consent-gated learning routes in an isolated sandbox",
    "fixed scroll_depth_25, scroll_depth_50, scroll_depth_75, scroll_depth_100 and reading_offer_viewed goals with empty payloads under the engagement rules below",
    "fixed business route path with sanitized campaign tags, never private content",
    "empty registration_completed, email_submitted, email_verified and reading_completed goals after server success"
  ],
  "excluded_data": [
    "any visitor-entered input, textarea, select, or contenteditable value",
    "reading question or clarification",
    "drawn cards or interpretation",
    "email or phone",
    "Gadalnya account or application-session identifier",
    "order identifier, amount, tariff, or product composition",
    "any current-page query key outside the campaign allowlist, duplicate query key, empty or unsafe query value, or overlength query value",
    "any current-page fragment",
    "any internal referrer query or fragment",
    "all private content and nested private paths; only fixed /reading/, /account/, /prices/ route names may be measured",
    "trainer answers, correctness, reflection, and lesson identifiers"
  ],
  "configured_features": {
    "parent_page_tracker": "defer=true with manual sanitized SPA hits; active only on an allowed canonical HTTPS URL with no fragment and either no query or a unique safe campaign-query allowlist",
    "webvisor": "Webvisor 2.0 enabled only in the consent-gated parent tracker",
    "clickmap": "enabled only in the consent-gated parent tracker",
    "track_links": "enabled only in the consent-gated parent tracker",
    "accurate_bounce": "enabled only in the consent-gated parent tracker",
    "send_title": "disabled; each manual hit uses a fixed editorial title",
    "autogoals": "enabled in the Yandex Metrica counter settings as auxiliary diagnostics and never treated as payment confirmation",
    "ecommerce_runtime": "the counter UI switch is disabled; the Gadalnya runtime does not initialize ecommerce in either the parent tracker or the purchase iframe, does not create or populate dataLayer, and does not send product, order, price, or currency data",
    "manual_goals": "reading_entry_click, reading_offer_click, exercise_started, first_lesson_completed, purchase_confirmed, scroll_depth_25, scroll_depth_50, scroll_depth_75, scroll_depth_100, reading_offer_viewed, registration_completed, email_submitted, email_verified and reading_completed are sent with empty parameter objects",
    "visitor_linkage": "random analytics-only UserID retained for no more than 180 days and sent only with consent",
    "field_protection": "input and textarea elements receive ym-disable-keys; select and contenteditable elements receive ym-hide-content; protection is applied before tracking and after DOM mutations, and sensitive containers also receive ym-hide-content",
    "protected_route_teardown": "the parent counter receives destruct before analytics continues after a move to a protected path, a URL with any fragment, or a URL with an unlisted, duplicate, empty, unsafe, or overlength query value; entering a measurement-only learning route also synchronously destroys the parent tracker before deferred reconciliation",
    "purchase_isolation": "same sandboxed measurement frame as business goals; no parent DOM, no ecommerce; purchase parameters empty",
    "local_deduplication": "one-way pending, delivery-attempt, and reported fingerprints stay only in the consenting browser and are never sent to Yandex; an unknown post-attempt outcome is not automatically retried",
    "measurement_only_parent_routes": "six learning paths use a dedicated sandbox allow-scripts iframe; the parent never loads Metrica or records DOM behavior",
    "business_measurement": "sandbox allow-scripts without allow-same-origin, no-referrer; webvisor/clickmap/trackLinks/trackHash/YTM disabled; fixed titles and manual sanitized views",
    "business_attribution": "consented safe campaign tags held in sessionStorage for up to 30 minutes; no account identifier sent; sandbox ClientID continuity with parent is not asserted",
    "business_deduplication": "server HMAC receipt key stays local; Web Locks if supported; at-most-once attempt cache capped at 1000 entries and 180 days; unknown delivery not retried",
    "oauth_receipt_cookie": "HttpOnly SameSite=Lax signed same-site receipt, path /api/account, max 5 minutes, bound to authenticated account, only with current optional analytics consent"
  },
  "counter_ui_settings": {
    "ecommerce": "disabled"
  },
  "spa_limitations": {
    "supported": [
      "Webvisor 2.0",
      "click map",
      "link map"
    ],
    "unsupported_or_not_relied_on": [
      "scroll map",
      "form analytics",
      "Webvisor 1.0"
    ],
    "form_values_policy": "form values are intentionally protected from recording regardless of the counter UI toggle"
  },
  "disabled_features": [
    "track_hash",
    "content_analytics",
    "tag_manager",
    "user_parameters",
    "offline_data",
    "noscript_pixel",
    "contact_value_tracking",
    "ecommerce"
  ],
  "main_account_and_reading_registry": "/legal/data-recipients.v8.json",
  "official_documentation": {
    "terms": "https://yandex.ru/legal/metrica_termsofuse/ru/",
    "initialization": "https://yandex.ru/support/metrica/ru/code/counter-initialize",
    "spa": "https://yandex.ru/support/metrica/ru/code/counter-spa-setup",
    "privacy_markup": "https://yandex.ru/support/metrica/ru/code/html-markup",
    "webvisor": "https://yandex.ru/support/metrica/ru/webvisor/settings",
    "click_map": "https://yandex.ru/support/metrica/ru/behavior/click-map",
    "form_analytics": "https://yandex.ru/support/metrica/ru/behavior/web-forms",
    "auto_goals": "https://yandex.ru/support/metrica/ru/general/auto-goals",
    "ecommerce": "https://yandex.ru/support/metrica/ru/data/e-commerce",
    "reach_goal": "https://yandex.ru/support/metrica/ru/objects/reachgoal"
  },
  "measurement_only_paths": [
    "/trainers/",
    "/encyclopedias/",
    "/trainer/",
    "/taro/trenazher/",
    "/kamni/trenazher/",
    "/astrologiya/trenazher/"
  ],
  "measurement_only_rules": {
    "parent_dom_webvisor": false,
    "parent_dom_clickmap": false,
    "parent_dom_link_tracking": false,
    "sandbox_frame": "allow-scripts only, no parent DOM access",
    "fixed_goals": [
      "exercise_started",
      "first_lesson_completed"
    ],
    "goal_payload": {},
    "editorial_hub_depth_goals": {
      "paths": [
        "/trainers/",
        "/encyclopedias/"
      ],
      "goals": [
        "scroll_depth_25",
        "scroll_depth_50",
        "scroll_depth_75",
        "scroll_depth_100"
      ]
    },
    "excluded": [
      "answers",
      "correctness",
      "reflection",
      "lesson_id",
      "account_id",
      "contact"
    ]
  },
  "engagement_rules": {
    "depth_paths": [
      "/",
      "/rasklady/odna-karta/",
      "/rasklady/tri-karty/",
      "/rasklady/keltskiy-krest/",
      "/temy/lyubov/",
      "/temy/budushchee/",
      "/temy/semya/",
      "/temy/rabota/",
      "/znacheniya-kart/",
      "/kamni/",
      "/runy/",
      "/kamni-dlya-run/",
      "/cards/",
      "/trainers/",
      "/encyclopedias/",
      "/cards/major-fool/",
      "/cards/major-magician/",
      "/cards/major-high-priestess/",
      "/cards/major-empress/",
      "/cards/major-emperor/",
      "/cards/major-hierophant/",
      "/cards/major-lovers/",
      "/cards/major-chariot/",
      "/cards/major-strength/",
      "/cards/major-hermit/",
      "/cards/major-wheel-of-fortune/",
      "/cards/major-justice/",
      "/cards/major-hanged-man/",
      "/cards/major-death/",
      "/cards/major-temperance/",
      "/cards/major-devil/",
      "/cards/major-tower/",
      "/cards/major-star/",
      "/cards/major-moon/",
      "/cards/major-sun/",
      "/cards/major-judgement/",
      "/cards/major-world/",
      "/cards/wands-ace/",
      "/cards/wands-two/",
      "/cards/wands-three/",
      "/cards/wands-four/",
      "/cards/wands-five/",
      "/cards/wands-six/",
      "/cards/wands-seven/",
      "/cards/wands-eight/",
      "/cards/wands-nine/",
      "/cards/wands-ten/",
      "/cards/wands-page/",
      "/cards/wands-knight/",
      "/cards/wands-queen/",
      "/cards/wands-king/",
      "/cards/cups-ace/",
      "/cards/cups-two/",
      "/cards/cups-three/",
      "/cards/cups-four/",
      "/cards/cups-five/",
      "/cards/cups-six/",
      "/cards/cups-seven/",
      "/cards/cups-eight/",
      "/cards/cups-nine/",
      "/cards/cups-ten/",
      "/cards/cups-page/",
      "/cards/cups-knight/",
      "/cards/cups-queen/",
      "/cards/cups-king/",
      "/cards/swords-ace/",
      "/cards/swords-two/",
      "/cards/swords-three/",
      "/cards/swords-four/",
      "/cards/swords-five/",
      "/cards/swords-six/",
      "/cards/swords-seven/",
      "/cards/swords-eight/",
      "/cards/swords-nine/",
      "/cards/swords-ten/",
      "/cards/swords-page/",
      "/cards/swords-knight/",
      "/cards/swords-queen/",
      "/cards/swords-king/",
      "/cards/pentacles-ace/",
      "/cards/pentacles-two/",
      "/cards/pentacles-three/",
      "/cards/pentacles-four/",
      "/cards/pentacles-five/",
      "/cards/pentacles-six/",
      "/cards/pentacles-seven/",
      "/cards/pentacles-eight/",
      "/cards/pentacles-nine/",
      "/cards/pentacles-ten/",
      "/cards/pentacles-page/",
      "/cards/pentacles-knight/",
      "/cards/pentacles-queen/",
      "/cards/pentacles-king/"
    ],
    "depth_goals": [
      "scroll_depth_25",
      "scroll_depth_50",
      "scroll_depth_75",
      "scroll_depth_100"
    ],
    "depth_definition": "viewport bottom divided by maximum observed document height, only after downward scrolling in a visible tab; 100 percent allows 2px bottom tolerance; unscrollable pages, initial load and resize alone do not emit",
    "offer_goal": "reading_offer_viewed",
    "offer_path": "/",
    "offer_definition": "final editorial reading-entry CTA intersects the viewport by at least 50 percent for 1000 continuous milliseconds in a visible tab; not a paid offer, click, purchase, or proof of reading",
    "click_goal": "reading_offer_click",
    "click_path": "/",
    "click_definition": "a consented visitor activates the final homepage reading CTA; it is distinct from reading_entry_click, which remains the aggregate public entry signal",
    "deduplication": "once per goal per consented sanitized page-view instance; renewed consent or revisiting a route starts a new instance",
    "goal_payload": {},
    "privacy": "geometry is evaluated locally, never sent as goal parameters; no text, answers, questions, lesson identifiers, or account data; no depth collection on actual trainer or protected routes",
    "spa_limit": "custom goals, not Yandex built-in scroll-map or form analytics; only future consented events after deployment, no historical backfill"
  },
  "measurement_only_business_paths": [
    "/reading/",
    "/account/",
    "/prices/"
  ],
  "business_goals": {
    "registration_completed": "new persisted account; existing login excluded",
    "email_submitted": "email OTP provider accepted sending a new code; not verification or a unique person",
    "email_verified": "new verified email identity; repeated login excluded",
    "reading_completed": "server accepted and saved completed reading; local opaque receipt suppresses repeats"
  },
  "business_query_rules": "In isolated business frame only: discard unknown/invalid/duplicate keys and all fragments; retain ASCII allowlisted campaign values of 1..128 characters. Never enable parent tracker for such a URL.",
  "ad_landing_measurement_fallback": [
    "/",
    "/rasklady/odna-karta/",
    "/rasklady/tri-karty/",
    "/rasklady/keltskiy-krest/",
    "/temy/lyubov/",
    "/temy/budushchee/",
    "/temy/semya/",
    "/temy/rabota/"
  ]
}
