From afb4317f0bde3ff8145197ed92308b28a05983b5 Mon Sep 17 00:00:00 2001 From: julitafalcondusza Date: Thu, 25 Jun 2026 14:11:30 +0200 Subject: [PATCH 01/26] release notes for 5.0.9 added --- docs/release_notes/ibexa_dxp_v5.0.md | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 8e5e564082..a6e60b6379 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -10,6 +10,35 @@ month_change: true
+[[% set version = 'v5.0.9' %]] +[[% set date = '2026-06-30' %]] + +[[= release_note_entry_begin( + 'MCP Servers ' + version, + date, + ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release'] +) =]] + +MCP servers update + +[[= release_note_entry_end() =]] + +[[= release_note_entry_begin( + "Ibexa DXP " + version, + '2026-06-30', + ['Headless', 'Experience', 'Commerce', 'New feature'] +) =]] + +### Hybrid tracking + +New `hybrid` tracking mode is available alongside [`client` and `server`](tracking_functions.md). +In this mode, the browser uses a first-party tracking shim provided by the DXP instance. +Tracking events are forwarded through a same-origin endpoint and processed server side before being sent to Raptor, helping reduce the impact of ad blockers while preserving client side event tracking. + +For more information, see [hybrid tracking](https://doc.ibexa.co/en/5.0/recommendations/raptor_integration/hybrid_tracking/). + +[[= release_note_entry_end() =]] + [[% set version = 'v5.0.8' %]] [[% set date = '2026-05-21' %]] From 1335f22f836e9f31d12748167e9f53d3c4af391c Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 25 Jun 2026 16:26:51 +0200 Subject: [PATCH 02/26] ibexa_dxp_v5.0.md: MCP changes --- docs/release_notes/ibexa_dxp_v5.0.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index a6e60b6379..a5a5674111 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -19,7 +19,33 @@ month_change: true ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release'] ) =]] -MCP servers update +### Tools + +Several new content type tools were added to the MCP Servers feature: + +- `add_field_definition` +- `create_content_type` +- `get_content_type_by_identifier` +- `get_content_type_draft` +- `get_content_type_groups` +- `get_content_type_list` +- `get_content_type` +- `list_non_translated_content_ids` +- `publish_content_type_draft` +- `remove_field_definition` +- `update_field_definition` + +One tool have been renamed: + +- `list_content_translations` is now `list_content_languages` + +For more information, see [Built-in tools](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#built-in-tools). + +### Configuration + +A mandatory `allowed_hosts` parameter is added to configuration to restrict access to an MCP server. + +For more information, see [Allowed hosts](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#allowed-hosts). [[= release_note_entry_end() =]] From ebfe8f64b7a04f5e64797c71dc5c250a83c0a7bb Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Fri, 26 Jun 2026 12:58:14 +0200 Subject: [PATCH 03/26] From @adriendupuis : simplify --- docs/release_notes/ibexa_dxp_v5.0.md | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index a5a5674111..73b8fa04d1 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -21,19 +21,7 @@ month_change: true ### Tools -Several new content type tools were added to the MCP Servers feature: - -- `add_field_definition` -- `create_content_type` -- `get_content_type_by_identifier` -- `get_content_type_draft` -- `get_content_type_groups` -- `get_content_type_list` -- `get_content_type` -- `list_non_translated_content_ids` -- `publish_content_type_draft` -- `remove_field_definition` -- `update_field_definition` +Several new content type tools are available. One tool have been renamed: From 57d5b81221eeb00f9555495cddfdcf5a3f792ea6 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Fri, 26 Jun 2026 15:21:40 +0200 Subject: [PATCH 04/26] Revert "From @adriendupuis : simplify" This reverts commit ebfe8f64b7a04f5e64797c71dc5c250a83c0a7bb. --- docs/release_notes/ibexa_dxp_v5.0.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 73b8fa04d1..a5a5674111 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -21,7 +21,19 @@ month_change: true ### Tools -Several new content type tools are available. +Several new content type tools were added to the MCP Servers feature: + +- `add_field_definition` +- `create_content_type` +- `get_content_type_by_identifier` +- `get_content_type_draft` +- `get_content_type_groups` +- `get_content_type_list` +- `get_content_type` +- `list_non_translated_content_ids` +- `publish_content_type_draft` +- `remove_field_definition` +- `update_field_definition` One tool have been renamed: From 7a66f6e55fa904fb4a812aaa47e83ac5e97f607f Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Fri, 26 Jun 2026 15:25:33 +0200 Subject: [PATCH 05/26] Fix MCP tool list --- docs/release_notes/ibexa_dxp_v5.0.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index a5a5674111..0f1ca10535 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -23,21 +23,21 @@ month_change: true Several new content type tools were added to the MCP Servers feature: -- `add_field_definition` - `create_content_type` +- `get_content_type` - `get_content_type_by_identifier` -- `get_content_type_draft` -- `get_content_type_groups` - `get_content_type_list` -- `get_content_type` -- `list_non_translated_content_ids` +- `get_content_type_draft` - `publish_content_type_draft` +- `add_field_definition` - `remove_field_definition` - `update_field_definition` +- `get_content_type_groups` -One tool have been renamed: +Among translation tools: -- `list_content_translations` is now `list_content_languages` +- `list_non_translated_content_ids` tool is added. +- `list_content_translations` is now renamed `list_content_languages` For more information, see [Built-in tools](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#built-in-tools). From 4b803dc2762b4fa76b32383a518bb8b16a39180b Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Fri, 26 Jun 2026 15:37:35 +0200 Subject: [PATCH 06/26] Add the capability `title` config --- docs/release_notes/ibexa_dxp_v5.0.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 0f1ca10535..68701cf0d7 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -43,9 +43,8 @@ For more information, see [Built-in tools](https://doc.ibexa.co/en/5.0/ai/mcp/mc ### Configuration -A mandatory `allowed_hosts` parameter is added to configuration to restrict access to an MCP server. - -For more information, see [Allowed hosts](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#allowed-hosts). +- A mandatory `allowed_hosts` parameter is added to configuration to restrict access to an MCP server. For more information, see [Allowed hosts](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#allowed-hosts). +- A `title` property is added to capability attributes to optionally provide a friendly UI label. For more information see [MCP server capabilities](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_usage/#mcp-server-capabilities). [[= release_note_entry_end() =]] From b3175b1891f5a01f0a8fae47755e64fa7b10f1ce Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Fri, 26 Jun 2026 16:02:42 +0200 Subject: [PATCH 07/26] Apply suggestions from code review Co-authored-by: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> --- docs/release_notes/ibexa_dxp_v5.0.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 68701cf0d7..acd762cdba 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -21,7 +21,7 @@ month_change: true ### Tools -Several new content type tools were added to the MCP Servers feature: +Several new experimental content type tools were added to the MCP Servers feature: - `create_content_type` - `get_content_type` @@ -43,7 +43,7 @@ For more information, see [Built-in tools](https://doc.ibexa.co/en/5.0/ai/mcp/mc ### Configuration -- A mandatory `allowed_hosts` parameter is added to configuration to restrict access to an MCP server. For more information, see [Allowed hosts](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#allowed-hosts). +- An `allowed_hosts` parameter is added to configuration to restrict access to an MCP server. It's default value covers only few local cases. For more information, see [Allowed hosts](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#allowed-hosts). - A `title` property is added to capability attributes to optionally provide a friendly UI label. For more information see [MCP server capabilities](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_usage/#mcp-server-capabilities). [[= release_note_entry_end() =]] From b2712ec146556563fcecdfb3ad1b75e25d931cbd Mon Sep 17 00:00:00 2001 From: julitafalcondusza Date: Mon, 29 Jun 2026 08:07:33 +0200 Subject: [PATCH 08/26] section about new recommendation blocks added --- docs/release_notes/ibexa_dxp_v5.0.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index acd762cdba..9fa52efe94 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -62,6 +62,17 @@ Tracking events are forwarded through a same-origin endpoint and processed serve For more information, see [hybrid tracking](https://doc.ibexa.co/en/5.0/recommendations/raptor_integration/hybrid_tracking/). +### Raptor connector + +#### New recommendation blocks [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] + +Two new recommendation blocks are available in Page Builder: + +- **Items of Customized Feeds sorted by personal preferences and popularity or trendiness** sorts items from Customized Feeds based on user preferences, popularity, and current trends +- **Merchandising content sorted by personal preferences and popularity** uses merchandising content and sorts it by personal preferences and popularity + +For more information, see [recommendation blocks](https://doc.ibexa.co/en/5.0/recommendations/raptor_integration/recommendation_blocks/). + [[= release_note_entry_end() =]] [[% set version = 'v5.0.8' %]] From 22659067798046cfe3d8e97cf9d8c6e2b284a6cb Mon Sep 17 00:00:00 2001 From: julitafalcondusza Date: Mon, 29 Jun 2026 10:04:51 +0200 Subject: [PATCH 09/26] latest tags updated --- mkdocs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 6ecfc86c8c..c73fb6ddf8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1037,8 +1037,8 @@ extra: latest_tag_4_3: '4.3.5' latest_tag_4_4: '4.4.4' latest_tag_4_5: '4.5.7' - latest_tag_4_6: '4.6.30' - latest_tag_5_0: '5.0.8' + latest_tag_4_6: '4.6.31' + latest_tag_5_0: '5.0.9' symfony_doc: 'https://symfony.com/doc/7.4' user_doc: 'https://doc.ibexa.co/projects/userguide/en/5.0' From 26a923d03cff790d15689e2750b958b194e5bbe7 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 29 Jun 2026 13:17:29 +0200 Subject: [PATCH 10/26] Apply suggestion from @adriendupuis --- docs/release_notes/ibexa_dxp_v5.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 9fa52efe94..3a90e59ad8 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -37,7 +37,7 @@ Several new experimental content type tools were added to the MCP Servers featur Among translation tools: - `list_non_translated_content_ids` tool is added. -- `list_content_translations` is now renamed `list_content_languages` +- `list_content_translations` is now renamed to `list_content_languages` For more information, see [Built-in tools](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#built-in-tools). From ed94c25ffd80deb50b328c9ea2869a927f0dcdc8 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Mon, 29 Jun 2026 13:18:21 +0200 Subject: [PATCH 11/26] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Marek Nocoń --- docs/release_notes/ibexa_dxp_v5.0.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 3a90e59ad8..57c1a9fc3e 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -16,7 +16,7 @@ month_change: true [[= release_note_entry_begin( 'MCP Servers ' + version, date, - ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release'] + ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature'] ) =]] ### Tools @@ -43,7 +43,7 @@ For more information, see [Built-in tools](https://doc.ibexa.co/en/5.0/ai/mcp/mc ### Configuration -- An `allowed_hosts` parameter is added to configuration to restrict access to an MCP server. It's default value covers only few local cases. For more information, see [Allowed hosts](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#allowed-hosts). +- An `allowed_hosts` parameter is added to configuration to restrict access to an MCP server. It's default value covers only few cases for local development. For more information, see [Allowed hosts](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#allowed-hosts). - A `title` property is added to capability attributes to optionally provide a friendly UI label. For more information see [MCP server capabilities](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_usage/#mcp-server-capabilities). [[= release_note_entry_end() =]] From 22502c3b65ee0c0be12face86840f37d0b93b99a Mon Sep 17 00:00:00 2001 From: julitafalcondusza <117284672+julitafalcondusza@users.noreply.github.com> Date: Mon, 29 Jun 2026 14:40:31 +0200 Subject: [PATCH 12/26] IBX-111154: New recommendation blocks described (#3247) * new blocks described * tooltip info added * table updated * tooltip info moved to seperate PR * tooltip img removed * fixes after review * type fixes --- .../raptor_integration/custom_recommendation_rendering.md | 5 +++++ .../raptor_integration/raptor_connector_guide.md | 2 ++ .../raptor_integration/recommendation_blocks.md | 2 ++ 3 files changed, 9 insertions(+) diff --git a/docs/recommendations/raptor_integration/custom_recommendation_rendering.md b/docs/recommendations/raptor_integration/custom_recommendation_rendering.md index 3ea21f2693..2bca4a40df 100644 --- a/docs/recommendations/raptor_integration/custom_recommendation_rendering.md +++ b/docs/recommendations/raptor_integration/custom_recommendation_rendering.md @@ -30,6 +30,9 @@ Any other required parameters are specific to each controller and are detailed i |Block name| Controller |Parameters|Recommendation item type| |----------|---------------------------------------------------------------------------------------------|----------|------------------------| |[Content that have been seen along with the item category]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#content-that-has-been-seen-along-with-the-item-category-block)| `ContentBasedOnProductCategoryBlockController`
`::showAction()` |`categoryId` (integer),
`limit` (integer),
`template` (string)|Content| +|[Items associated with the given Content]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#items-associated-with-the-given-content-block)| `ItemsBasedOnContentBlockController`
`::showAction()` |`contentId` (integer),
`limit` (integer),
`template` (string)|Product| +|[Items of Customized Feeds sorted by personal preferences and popularity or trendiness]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#items-of-customized-feeds-sorted-by-personal-preferences-and-popularity-or-trendiness)| `MerchandisingItemsBlockController`
`::showAction()` |`merchandisingCampaignId` (string),
`limit` (integer),
`template` (string)|Product| +|[Merchandising content sorted by personal preferences and popularity]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#merchandising-content-sorted-by-personal-preferences-and-popularity)| `MerchandisingContentBlockController`
`::showAction()` |`merchandisingCampaignId` (string),
`limit` (integer),
`template` (string)|Content| |[Most popular content]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#most-popular-content-block)| `PopularContentBlockController`
`::showAction()` |`limit` (integer),
`template` (string)|Content| |[Most popular products]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#most-popular-products-block)| `PopularItemsBlockController`
`::showAction()` |`showInStock` (boolean),
`limit` (integer),
`template` (string)|Product| |[Most popular products in category]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#most-popular-products-in-category-block)| `PopularItemsInCategoryBlockController`
`::showAction()` |`categoryId` (integer),
`showInStock` (boolean),
`limit` (integer),
`template` (string)|Product| @@ -38,6 +41,8 @@ Any other required parameters are specific to each controller and are detailed i |[Other Customers Have also Purchased block]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#other-customers-have-also-purchased-block)| `OtherCustomersAlsoPurchasedBlockController`
`::showAction()` |`productCode` (string),
`limit` (integer),
`template` (string)|Product| |[Personalized content recommendations]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#personalized-content-recommendations-block)| `UserContentRecommendationsBlockController`
`::showAction()` |`limit` (integer),
`template` (string)|Content| |[The Personal Shopping Assistant]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#the-personal-shopping-assistant-block)| `UserItemRecommendationsBlockController`
`::showAction()` |`productCode` (string),
`showInStock` (boolean),
`limit` (integer),
`template` (string)|Product| +|[The Personal Shopping Assistant (additional sales)]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#the-personal-shopping-assistant-additional-sales-block)| `UserCrossSellingBlockController`
`::showAction()` |`showInStock` (boolean),
`limit` (integer),
`template` (string)|Product| +|[The Personal Shopping Assistant (conversion)]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#the-personal-shopping-assistant-conversion-block)| `UserCrossSellingBlockController`
`::showAction()` |`showInStock` (boolean),
`limit` (integer),
`template` (string)|Product| |[User's item history]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#users-item-history-block)| `UserItemHistoryBlockController`
`::showAction()` |`showInStock` (boolean),
`limit` (integer),
`template` (string)|Product| Each template receives a `recommendations` Twig variable, which is a list with either [`Ibexa\Contracts\ProductCatalog\Values\ProductInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-ProductInterface.html) instances for product recommendations or [`Ibexa\Contracts\Core\Repository\Values\Content\Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) instances for content recommendations. diff --git a/docs/recommendations/raptor_integration/raptor_connector_guide.md b/docs/recommendations/raptor_integration/raptor_connector_guide.md index 0d690b168c..3e96780d7e 100644 --- a/docs/recommendations/raptor_integration/raptor_connector_guide.md +++ b/docs/recommendations/raptor_integration/raptor_connector_guide.md @@ -65,12 +65,14 @@ Recommendation blocks are organized into dedicated categories, each grouping blo - **Recommendations: Content** - presents content recommendations: - [Content that has been seen along with the item category]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#content-that-has-been-seen-along-with-the-item-category-block) + - [Merchandising content sorted by personal preferences and popularity]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#merchandising-content-sorted-by-personal-preferences-and-popularity) - [Most popular content]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#most-popular-content-block) - [Other customers have also seen this content]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#other-customers-have-also-seen-this-content-block) - [Personalized content recommendations]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#personalized-content-recommendations-block) - [User’s content history]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#users-content-history-block) - **Recommendations: Product** - displays product suggestions based on visitors’ browsing history: - [Items associated with the given Content]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#items-associated-with-the-given-content-block) + - [Items of Customized Feeds sorted by personal preferences and popularity or trendiness]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#items-of-customized-feeds-sorted-by-personal-preferences-and-popularity-or-trendiness) - [Most popular products]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#most-popular-products-block) - [Most popular products in category]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#most-popular-products-in-category-block) - [Other customers have also seen]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#other-customers-have-also-seen-block) diff --git a/docs/recommendations/raptor_integration/recommendation_blocks.md b/docs/recommendations/raptor_integration/recommendation_blocks.md index fd33086270..5c6c967342 100644 --- a/docs/recommendations/raptor_integration/recommendation_blocks.md +++ b/docs/recommendations/raptor_integration/recommendation_blocks.md @@ -20,12 +20,14 @@ In the toolbar, corresponding categories for recommendation blocks are available - **Recommendations: Content** - presents content recommendations: - [Content that has been seen along with the item category]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#content-that-has-been-seen-along-with-the-item-category-block) + - [Merchandising content sorted by personal preferences and popularity]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#merchandising-content-sorted-by-personal-preferences-and-popularity) - [Most popular content]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#most-popular-content-block) - [Other customers have also seen this content]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#other-customers-have-also-seen-this-content-block) - [Personalized content recommendations]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#personalized-content-recommendations-block) - [User’s content history]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#users-content-history-block) - **Recommendations: Product** - displays product suggestions based on visitors’ browsing history: - [Items associated with the given Content]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#items-associated-with-the-given-content-block) + - [Items of Customized Feeds sorted by personal preferences and popularity or trendiness]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#items-of-customized-feeds-sorted-by-personal-preferences-and-popularity-or-trendiness) - [Most popular products]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#most-popular-products-block) - [Most popular products in category]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#most-popular-products-in-category-block) - [Other customers have also seen]([[= user_doc =]]/recommendations/raptor_integration/raptor_recommendation_blocks/#other-customers-have-also-seen-block) From b354de8b0db70e4b16aa8d3c530d32f6f43d9252 Mon Sep 17 00:00:00 2001 From: julitafalcondusza Date: Tue, 30 Jun 2026 09:51:22 +0200 Subject: [PATCH 13/26] fixes --- docs/release_notes/ibexa_dxp_v5.0.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 57c1a9fc3e..a613d8cb45 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -50,11 +50,13 @@ For more information, see [Built-in tools](https://doc.ibexa.co/en/5.0/ai/mcp/mc [[= release_note_entry_begin( "Ibexa DXP " + version, - '2026-06-30', + date, ['Headless', 'Experience', 'Commerce', 'New feature'] ) =]] -### Hybrid tracking +### Raptor connector + +#### Hybrid tracking New `hybrid` tracking mode is available alongside [`client` and `server`](tracking_functions.md). In this mode, the browser uses a first-party tracking shim provided by the DXP instance. @@ -62,8 +64,6 @@ Tracking events are forwarded through a same-origin endpoint and processed serve For more information, see [hybrid tracking](https://doc.ibexa.co/en/5.0/recommendations/raptor_integration/hybrid_tracking/). -### Raptor connector - #### New recommendation blocks [[% include 'snippets/experience_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] Two new recommendation blocks are available in Page Builder: From d990f5fabc490c882c09979f7af6cf6276dcd7f3 Mon Sep 17 00:00:00 2001 From: julitafalcondusza Date: Tue, 30 Jun 2026 09:56:04 +0200 Subject: [PATCH 14/26] "new feature" in mpc section removed --- docs/release_notes/ibexa_dxp_v5.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index a613d8cb45..a5110bcd6c 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -16,7 +16,7 @@ month_change: true [[= release_note_entry_begin( 'MCP Servers ' + version, date, - ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature'] + ['Headless', 'Experience', 'Commerce', 'LTS Update'] ) =]] ### Tools From 9acef17cb8dd2ac6845f91319a7486614ae9e5ba Mon Sep 17 00:00:00 2001 From: julitafalcondusza Date: Tue, 30 Jun 2026 09:59:29 +0200 Subject: [PATCH 15/26] fix --- docs/release_notes/ibexa_dxp_v5.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index a5110bcd6c..a2b760e010 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -16,7 +16,7 @@ month_change: true [[= release_note_entry_begin( 'MCP Servers ' + version, date, - ['Headless', 'Experience', 'Commerce', 'LTS Update'] + ['Headless', 'Experience', 'Commerce', 'LTS Update, 'New feature'] ) =]] ### Tools From a8abce8c0f97816a2c5b0b43f8a4f0924f819a95 Mon Sep 17 00:00:00 2001 From: julitafalcondusza Date: Tue, 30 Jun 2026 10:18:32 +0200 Subject: [PATCH 16/26] fix --- docs/release_notes/ibexa_dxp_v5.0.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index a2b760e010..519be08457 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -16,7 +16,7 @@ month_change: true [[= release_note_entry_begin( 'MCP Servers ' + version, date, - ['Headless', 'Experience', 'Commerce', 'LTS Update, 'New feature'] + ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature'] ) =]] ### Tools @@ -36,7 +36,7 @@ Several new experimental content type tools were added to the MCP Servers featur Among translation tools: -- `list_non_translated_content_ids` tool is added. +- `list_non_translated_content_ids` tool is added - `list_content_translations` is now renamed to `list_content_languages` For more information, see [Built-in tools](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#built-in-tools). From c5d0ccd2ba3aff3638b7ab75509ae061bcbc1d8b Mon Sep 17 00:00:00 2001 From: julitafalcondusza Date: Tue, 30 Jun 2026 11:47:15 +0200 Subject: [PATCH 17/26] comma added --- docs/release_notes/ibexa_dxp_v5.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 519be08457..0c6d4708e3 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -44,7 +44,7 @@ For more information, see [Built-in tools](https://doc.ibexa.co/en/5.0/ai/mcp/mc ### Configuration - An `allowed_hosts` parameter is added to configuration to restrict access to an MCP server. It's default value covers only few cases for local development. For more information, see [Allowed hosts](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#allowed-hosts). -- A `title` property is added to capability attributes to optionally provide a friendly UI label. For more information see [MCP server capabilities](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_usage/#mcp-server-capabilities). +- A `title` property is added to capability attributes to optionally provide a friendly UI label. For more information, see [MCP server capabilities](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_usage/#mcp-server-capabilities). [[= release_note_entry_end() =]] From 4222ecdec5e950d39108cb2ca66b080cbd326ea2 Mon Sep 17 00:00:00 2001 From: julitafalcondusza <117284672+julitafalcondusza@users.noreply.github.com> Date: Tue, 30 Jun 2026 12:02:20 +0200 Subject: [PATCH 18/26] IBX-11100: Hybrid tracking described in Dev-doc (#3250) * hybrid tracking described * fixes after review * content added + fixes * mkdocs updated * note added * blank lines removed * fixes after review * fixes * fixes * fixes after review --- .../packages/ibexa_connector_raptor.yaml | 3 +- .../connector_installation_configuration.md | 5 +- .../raptor_integration/hybrid_tracking.md | 115 ++++++++++++++++++ .../raptor_integration/raptor_connector.md | 1 + .../raptor_connector_guide.md | 8 +- .../raptor_integration/tracking_functions.md | 8 +- .../recommendations_twig_functions.md | 2 + mkdocs.yml | 1 + 8 files changed, 137 insertions(+), 6 deletions(-) create mode 100644 docs/recommendations/raptor_integration/hybrid_tracking.md diff --git a/code_samples/recommendations/config/packages/ibexa_connector_raptor.yaml b/code_samples/recommendations/config/packages/ibexa_connector_raptor.yaml index 18ad640c12..1147603dcb 100644 --- a/code_samples/recommendations/config/packages/ibexa_connector_raptor.yaml +++ b/code_samples/recommendations/config/packages/ibexa_connector_raptor.yaml @@ -4,7 +4,7 @@ ibexa: connector_raptor: enabled: true customer_id: ~ # Required - tracking_type: client # One of: "client" or "server" + tracking_type: client # One of: "client", "server", or "hybrid" # Raptor Recommendations API key recommendations_api_key: ~ # Required @@ -18,3 +18,4 @@ ibexa: ibexa_connector_raptor: # When enabled, tracking exceptions are thrown instead of being silently handled strict_exceptions: true + hybrid_tracking_proxy_path: '/raptor/track' diff --git a/docs/recommendations/raptor_integration/connector_installation_configuration.md b/docs/recommendations/raptor_integration/connector_installation_configuration.md index dcb0e9c578..148e0f0c0c 100644 --- a/docs/recommendations/raptor_integration/connector_installation_configuration.md +++ b/docs/recommendations/raptor_integration/connector_installation_configuration.md @@ -34,6 +34,7 @@ To configure the Raptor connector, use the `ibexa.system..connector_rapto - `tracking_type` - defines how user events are sent to the tracking API. Default value: `client`. Possible values: - `client` - tracking is executed in the browser using JavaScript snippets generated by the [Twig functions](recommendations_twig_functions.md) and included in the templates. This approach may be blocked by ad blockers. - `server` - tracking is handled on the backend, with events sent directly to the tracking API. It's not affected by ad blockers. + - `hybrid` - tracking is executed in the browser by a first-party JavaScript provided by the DXP instead of Raptor and then forwarded by the DXP server to the Raptor SaaS. For more information, see [Hybrid tracking](hybrid_tracking.md). - `recommendations_api_key` - an API key used to authenticate requests to the Recommendations API. This key allows the connector to retrieve personalized recommendations from the recommendation engine. You can find this value as ["API key"](connector_installation_configuration.md#recommendations-api-key) in Raptor Control Panel. - `recommendations_api_url` (optional) - overrides the default Raptor address, do not set it unless a custom endpoint is required. - `cookie_id_lifetime_days` (optional) - the lifetime in days of the server-side tracking identifier cookies. Default value: `365` days. Minimum value: `1` day. @@ -72,8 +73,10 @@ The following settings are global and apply to the entire application (they are - `strict_exceptions` – when enabled, tracking exceptions are thrown instead of being silently handled. Default value: `%kernel.debug%`. +- `hybrid_tracking_proxy_path` - by default, it's set to `/raptor/track`. The client-side shim sends tracking events to this same-origin endpoint, which forwards them to Raptor asynchronously. + This value can be overridden in `config/packages/ibexa_connector_raptor.yaml` file, for example: -``` yaml hl_lines="18-20" +``` yaml hl_lines="18-21" [[= include_file('code_samples/recommendations/config/packages/ibexa_connector_raptor.yaml') =]] ``` diff --git a/docs/recommendations/raptor_integration/hybrid_tracking.md b/docs/recommendations/raptor_integration/hybrid_tracking.md new file mode 100644 index 0000000000..6a9a75f224 --- /dev/null +++ b/docs/recommendations/raptor_integration/hybrid_tracking.md @@ -0,0 +1,115 @@ +--- +description: Enable hybrid tracking to avoid ad blockers and proxy events through your server. +month_change: true +--- + +# Raptor hybrid tracking + +Hybrid tracking mode is an additional tracking mode available alongside [`client` and `server`](tracking_functions.md). +In hybrid mode, the bundle includes a client-side [shim](https://en.wikipedia.org/wiki/Shim_(computing)) that captures Raptor tracking events and sends them to a same-origin endpoint instead of communicating directly with Raptor SaaS. +The server enriches each event with identifiers resolved from request cookies (`cookieId`, `sessionId`, and `userId`) and forwards it to Raptor asynchronously through [Ibexa Messenger](background_tasks.md). +Since the browser never connects to the Raptor domain, ad blockers cannot block the requests. + +## Hybrid vs server or client-side tracking + +Both `server` and `hybrid` tracking modes deliver pageviews and events server-side, so tracking requests are not affected by ad blockers. +The main difference is that `hybrid` mode loads a first-party tracking JavaScript (`raptor-proxy.js`) provided by the DXP instance, instead of the Raptor SaaS JavaScript. +The Raptor script itself (`//deliver.raptorstatic.com/script/raptor-3.0.min.js`) is loaded only in `client` mode. + +The browser script only forwards captured tracking events to the same-origin proxy endpoint on your DXP instance. First-party visitor cookies are created and refreshed server-side, which is what helps them survive Safari [Intelligent Tracking Prevention](https://webkit.org/blog/7675/intelligent-tracking-prevention/). +Event tracking still happens on the server, so ad blockers cannot block it. + +The main advantage of `hybrid` mode over `server` mode is its ability to capture client-side tracking events. +Visitor cookies are also refreshed more frequently than in `server` mode. + +Check the table below to compare the behavior of different tracking modes: + +|Tracking type|Browser script|Event delivery|Works with ad blockers|Cookie refresh | +|-------------|--------------|--------------|----------------------|-------------------------------------| +|client |yes |Browser |no |yes | +|server |no |Server |yes |yes (server-side, on full page loads)| +|hybrid |yes |Server |yes |yes | + +## Hybrid tracking flow + +When hybrid tracking is enabled, `TrackingScriptExtension` renders the proxy bootstrap template and loads the `raptor-proxy.js` shim, which replaces the `window.raptor.push` function and sends out the events queued before the tracking consent was given. +The shim sends each captured event to the proxy endpoint as a separate POST request. +The `TrackingProxyController::track` action validates the `EventPayloadParser` payload, enriches each event with identifiers resolved from cookies, and dispatches one `TrackProxiedEventMessage` for every event. +Messages are then processed asynchronously via Ibexa Messenger and `TrackProxiedEventMessageHandler` ultimately forwards them to Raptor through `TrackingService::trackRawParameters`. + +### Hybrid tracking configuration + +To configure the Raptor hybrid tracking, use the `ibexa.system..connector_raptor` configuration key in the `config/packages/ibexa_connector_raptor.yaml` file: + +``` yaml +ibexa_connector_raptor: + hybrid_tracking_proxy_path: '/raptor/track' + +ibexa: + system: + default: + connector_raptor: + enabled: true + customer_id: '' + tracking_type: hybrid +``` + +!!! note + + The `hybrid_tracking_proxy_path` setting is configured globally, while `enabled`, `customer_id`, and `tracking_type` are configured per SiteAccess. + +### Routing import + +Hybrid tracking requires routing import. +It means that the proxy endpoint route must be imported in the project, for example in the `config/routes/ibexa_connector_raptor.yaml` file: + +``` yaml +ibexa.connector_raptor: + resource: '@IbexaConnectorRaptorBundle/Resources/config/routing.yaml' +``` + +This import is required only in `hybrid` mode. +Without it, the proxy endpoint returns 404 responses and tracking events are not processed. + +### Proxy path configuration + +You can configure the proxy endpoint path globally. +By default, it's set to `/raptor/track`. +The client-side shim sends tracking events to this same-origin endpoint, which forwards them to Raptor asynchronously. + +``` yaml +ibexa_connector_raptor: + hybrid_tracking_proxy_path: '/track' +``` + +!!! note + + The path must start with a `/` symbol and cannot overlap with any existing routes. + The route is generated from this value, so updating it automatically updates the route as well. + You don't need to modify the routing import. + +After changing the configuration, clear the application cache: + +``` bash +php bin/console cache:clear +``` + +Verify that the route has been registered correctly. +To do it, run the following command: + +``` bash +php bin/console debug:router | grep raptor +``` + +### Template usage + +By default, the tracking script waits for user consent before sending tracking events. + +For more information, see [Handle tracking consent](recommendations_twig_functions.md#handle-tracking-consent). + +The Twig API remains identical regardless of the configured tracking mode: + +``` html+twig +{{ ibexa_tracking_script() }} +{{ ibexa_tracking_track_event('visit', product) }} +``` diff --git a/docs/recommendations/raptor_integration/raptor_connector.md b/docs/recommendations/raptor_integration/raptor_connector.md index 2ff151583c..c266a2b4ce 100644 --- a/docs/recommendations/raptor_integration/raptor_connector.md +++ b/docs/recommendations/raptor_integration/raptor_connector.md @@ -28,6 +28,7 @@ For more information about tracking, check the Raptor documentation: [Implementi [[= cards([ "recommendations/raptor_integration/connector_installation_configuration", "recommendations/raptor_integration/tracking_functions", + "recommendations/raptor_integration/hybrid_tracking", "recommendations/raptor_integration/tracking_php_api", "recommendations/raptor_integration/recommendation_blocks", "recommendations/raptor_integration/custom_recommendation_rendering", diff --git a/docs/recommendations/raptor_integration/raptor_connector_guide.md b/docs/recommendations/raptor_integration/raptor_connector_guide.md index 3e96780d7e..8e4cea4682 100644 --- a/docs/recommendations/raptor_integration/raptor_connector_guide.md +++ b/docs/recommendations/raptor_integration/raptor_connector_guide.md @@ -33,13 +33,15 @@ Recommendation blocks provided in Page Builder, are available in [[= product_nam ## How does Raptor tracking work To start [tracking](https://content.raptorservices.com/help-center/introduction-to-tracking-documentation) user interactions, the tracking script needs to be added to the website’s layout. -Tracking can be set up either on the client-side or server-side, depending on how you want to capture and process the events. +Tracking can be set up either on the client-side, server-side, or using hybrid mode, depending on how you want to capture and process the events. The tracking works differently depending on the mode you choose. In server-side mode, tracking happens on the server, handling all events without loading scripts in the browser. In client-side mode, it inserts script tags so tracking runs directly in the browser. +In hybrid mode, the browser loads a first-party [shim](https://en.wikipedia.org/wiki/Shim_(computing)) that forwards tracking events to a same-origin proxy endpoint instead of the Raptor SaaS script, helping prevent ad blockers from blocking tracking. +For more information, see [Hybrid tracking](hybrid_tracking.md). -You can switch between server and client tracking at any time by changing the tracking type to fit your setup and needs. +You can switch between tracking modes at any time by changing the tracking type to fit your setup and needs. ## Capabilities @@ -90,7 +92,7 @@ For a complete description of Recommendation blocks see [Recommendation blocks i ### Advanced usage for complex tracking scenarios For more complex tracking requirements, [PHP API](tracking_php_api.md) provides direct access to the service. -It lets you track custom user actions, create more detailed tracking logic, and support scenarios not covered by the standard client- or server-side setups. +It lets you track custom user actions, create more detailed tracking logic, and support scenarios not covered by the standard setups. ## Benefits diff --git a/docs/recommendations/raptor_integration/tracking_functions.md b/docs/recommendations/raptor_integration/tracking_functions.md index a4e93a8521..bbdec71d89 100644 --- a/docs/recommendations/raptor_integration/tracking_functions.md +++ b/docs/recommendations/raptor_integration/tracking_functions.md @@ -37,18 +37,24 @@ connector_raptor: # Client-side tracking connector_raptor: tracking_type: 'client' # Returns + + + + + + + +
Copied!
+ + + +
+ +
+ +
+
+
+ + + + + + + + +
+
+
+ + + +
+
+ + +
+
+

+ TrackProxiedEventMessage

+ +
+ TrackProxiedEventMessage.php + : + 14 + +
+
Read-only
+
Final
+ + + +
+

Raw Raptor tracking event from the proxy endpoint, enriched with cookie-resolved identifiers.

+ + + + + + + + + + + + + +

+ Properties +

+ +
+

+ public + $cookieId + + +

+
+ TrackProxiedEventMessage.php + : + 23 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public string $cookieId
+
+
+
+ + +
+

+ public + $customerId + + +

+
+ TrackProxiedEventMessage.php + : + 21 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public string $customerId
+
+
+
+ + +
+

+ public + $moduleName + + +

+
+ TrackProxiedEventMessage.php + : + 26 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public string|null $moduleName = null
+
+
+
+ + +
+

+ public + $parameters + + +

+
+ TrackProxiedEventMessage.php + : + 20 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public array<string|int, mixed> $parameters
+
+
+
+ + +
+

+ public + $sessionId + + +

+
+ TrackProxiedEventMessage.php + : + 24 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public string $sessionId
+
+
+
+ + +
+

+ public + $url + + +

+
+ TrackProxiedEventMessage.php + : + 22 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public string $url
+
+
+
+ + +
+

+ public + $userId + + +

+
+ TrackProxiedEventMessage.php + : + 25 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public string|null $userId = null
+
+
+
+ + + + +

+ Methods +

+ +
+

+ public__construct() + +

+
+ TrackProxiedEventMessage.php + : + 19 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public __construct(array<string, scalar> $parameters, string $customerId, string $url, string $cookieId, string $sessionId[, string|null $userId = null ][, string|null $moduleName = null ])
+
+
+
+
+
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefault valueDescription
+ $parameters + + array<string, scalar> + + - + + - +
+ $customerId + + string + + - + + - +
+ $url + + string + + - + + - +
+ $cookieId + + string + + - + + - +
+ $sessionId + + string + + - + + - +
+ $userId + + string|null + + null + + - +
+ $moduleName + + string|null + + null + + - +
+ + +
+
+
+ +
+
+
+ +
+
+
+
+
+
+ + + + + + + + + + + diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-ContextProvider-WebsiteIdContextProviderInterface.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-ContextProvider-WebsiteIdContextProviderInterface.html new file mode 100644 index 0000000000..fa8a687445 --- /dev/null +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-ContextProvider-WebsiteIdContextProviderInterface.html @@ -0,0 +1,366 @@ + + + + + WebsiteIdContextProviderInterface | PHP API Reference (Ibexa Documentation) + + + + + + + + + + + + + + + + +
Copied!
+ + + +
+ +
+ +
+
+
+ + + + + + + + +
+
+
+ + + +
+
+ + +
+
+

+ WebsiteIdContextProviderInterface

+ +
+ WebsiteIdContextProviderInterface.php + : + 23 + +
+
Interface
+ +
+

Resolves a default value for the Raptor `websiteId` (parameter `p7`) when none +is supplied explicitly through the tracking event context.

+ + +
+

Implementations are aggregated via the +ibexa.connector.raptor.tracking.website_id_context_provider service tag and +consulted by the chain in descending tag-priority order. The first implementation +returning a non-null value wins.

+

Contract: implementations MUST return either null (meaning "decline, let the +chain continue") or a non-empty string. Returning an empty string is not allowed.

+ +
+ + + + + + + + + + + +

+ Methods +

+ +
+

+ publicgetWebsiteId() + +

+
+ WebsiteIdContextProviderInterface.php + : + 28 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public getWebsiteId() : non-empty-string|null
+
+
+
+
+
+

Return values

+

non-empty-string|null

+ + +
+
+
+ +
+
+
+ +
+
+
+
+
+
+ + + + + + + + + + + diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-ServerSideTrackingDispatcherInterface.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-ServerSideTrackingDispatcherInterface.html index fbac5b72e6..310dad4823 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-ServerSideTrackingDispatcherInterface.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-ServerSideTrackingDispatcherInterface.html @@ -268,11 +268,11 @@

ServerSideTrackingDispatcherInterface.php : - 21 + 24

-

Dispatches tracking event for asynchronous processing.

+

Dispatches a tracking event for asynchronous processing.

@@ -285,7 +285,7 @@

@@ -294,6 +294,11 @@

+
+

When $url is null, the URL of the current main request is used. The proxy controller +passes the originating page URL explicitly so it isn't replaced by the proxy path.

+ +

Parameters

-
public dispatch(EventDataInterface $eventData) : string
+
public dispatch(EventDataInterface $eventData[, string|null $url = null ]) : string
@@ -318,6 +323,20 @@

Parameters

+ + + + + +
-
+ $url + + string|null + + null + + - +
diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-TrackingBehaviorProviderInterface.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-TrackingBehaviorProviderInterface.html new file mode 100644 index 0000000000..01d2f5d3d1 --- /dev/null +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-TrackingBehaviorProviderInterface.html @@ -0,0 +1,542 @@ + + + + + TrackingBehaviorProviderInterface | PHP API Reference (Ibexa Documentation) + + + + + + + + + + + + + + + + +
Copied!
+ + + +
+ +
+ +
+
+
+ + + + + + + + +
+
+
+ + + +
+
+ + +
+
+

+ TrackingBehaviorProviderInterface

+ +
+ TrackingBehaviorProviderInterface.php + : + 20 + +
+
Interface
+ +
+

Resolves how the configured {@see Type} translates into concrete tracking actions.

+ + +
+

In hybrid mode the bundle ships its own client-side shim that proxies every Raptor request +through a same-origin endpoint so ad blockers cannot block them; the client never talks to +Raptor SaaS directly.

+ +
+ + + + + + + + + + + +

+ Methods +

+ +
+

+ publicshouldDispatchServerSide() + +

+
+ TrackingBehaviorProviderInterface.php + : + 34 + +
+
+

Server mode only.

+ +
+ + + + + + + +
+
+
+
+
+
+
public shouldDispatchServerSide() : bool
+
+
+
+
+
+

Return values

+

bool

+ +
+ Tags + + +
+
+
+ Throws +
+
+ InvalidConfigurationExceptionInterface + +
+
+ +
+

+ publicshouldProxyClientEvents() + +

+
+ TrackingBehaviorProviderInterface.php + : + 46 + +
+
+

Hybrid mode only.

+ +
+ + + + + + + +
+
+
+
+
+
+
public shouldProxyClientEvents() : bool
+
+
+
+
+
+

Return values

+

bool

+ +
+ Tags + + +
+
+
+ Throws +
+
+ InvalidConfigurationExceptionInterface + +
+
+ +
+

+ publicshouldRenderEventsClientSide() + +

+
+ TrackingBehaviorProviderInterface.php + : + 39 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public shouldRenderEventsClientSide() : bool
+
+
+
+
+
+

Return values

+

bool

+ +
+ Tags + + +
+
+
+ Throws +
+
+ InvalidConfigurationExceptionInterface + +
+
+ +
+

+ publicshouldRunClientScript() + +

+
+ TrackingBehaviorProviderInterface.php + : + 27 + +
+
+

Client and hybrid modes (Raptor CDN script, or the same-origin shim respectively).

+ +
+ + + + + + + +
+
+
+
+
+
+
public shouldRunClientScript() : bool
+
+
+
+
+
+

Return values

+

bool

+ +
+ Tags + + +
+
+
+ Throws +
+
+ InvalidConfigurationExceptionInterface + +
+
+ +
+
+
+ +
+
+ +
+
+
+
+
+ + + + + + + + + + + diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-TrackingServiceInterface.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-TrackingServiceInterface.html index 9119374cf2..825b7f6346 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-TrackingServiceInterface.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-TrackingServiceInterface.html @@ -5,7 +5,7 @@ TrackingServiceInterface | PHP API Reference (Ibexa Documentation) - + @@ -236,14 +236,13 @@

TrackingServiceInterface.php : - 17 + 14
Interface

-

Server-side tracking service for Raptor.

- + @@ -268,7 +267,7 @@

TrackingServiceInterface.php : - 27 + 24
@@ -319,7 +318,7 @@

TrackingServiceInterface.php : - 22 + 19
@@ -370,7 +369,7 @@

TrackingServiceInterface.php : - 32 + 29
@@ -511,6 +510,166 @@

Tags +
+
+
+ Throws +
+
+ InvalidConfigurationExceptionInterface + +
+
+ +
+

+ publictrackRawParameters() + +

+
+ TrackingServiceInterface.php + : + 44 + +
+
+ +
+ + + + + + + +
+
+
+
+
+
+
public trackRawParameters(array<string, mixed> $parameters, string $url, string $customerId, string $cookieId, string $sessionId[, string|null $userId = null ][, string|null $moduleName = null ]) : void
+
+
+
+
+
+

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefault valueDescription
+ $parameters + + array<string, mixed> + + - + + - +
+ $url + + string + + - + + - +
+ $customerId + + string + + - + + - +
+ $cookieId + + string + + - + + - +
+ $sessionId + + string + + - + + - +
+ $userId + + string|null + + null + + - +
+ $moduleName + + string|null + + null + + - +
+ +
+ Tags + +
@@ -556,6 +715,11 @@
track() + +
  • + + trackRawParameters() +
  • diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-Type.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-Type.html index 8ddb558e77..4a9a4f28f0 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-Type.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-Type.html @@ -328,6 +328,40 @@

    + +
    +
    +

    + HYBRID +

    +
    + Type.php + : + 15 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    string HYBRID = 'hybrid'
    +
    +
    +
    + +
    @@ -360,6 +394,11 @@

    SERVER + +
  • + + HYBRID +
  • diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ContentForms-Content-Form-Provider-GroupedContentFormFieldsProviderInterface.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ContentForms-Content-Form-Provider-GroupedContentFormFieldsProviderInterface.html index 0f451c97e7..e382128f4a 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ContentForms-Content-Form-Provider-GroupedContentFormFieldsProviderInterface.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-ContentForms-Content-Form-Provider-GroupedContentFormFieldsProviderInterface.html @@ -106,7 +106,7 @@ @@ -356,7 +356,7 @@

    McpPrompt.php : - 26 + 27
    @@ -451,6 +451,41 @@

    +
    +

    + public + $title + + +

    +
    + McpPrompt.php + : + 25 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public string|null $title = null
    +
    +
    +
    + +

    @@ -481,7 +516,7 @@

    -
    public __construct(array<int, string> $servers[, string|null $name = null ][, string|null $description = null ][, array<string|int, Icon>|null $icons = null ][, array<string, mixed>|null $meta = null ])
    +
    public __construct(array<int, string> $servers[, string|null $name = null ][, string|null $description = null ][, string|null $title = null ][, array<string|int, Icon>|null $icons = null ][, array<string, mixed>|null $meta = null ])
    @@ -542,6 +577,20 @@

    Parameters

    - + + + + $title + + + string|null + + + null + + + - + @@ -619,6 +668,11 @@

    Parameters

    servers + +
  • + + title +
  • diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpResource.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpResource.html index 8b37b39141..c0954e2adb 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpResource.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpResource.html @@ -286,7 +286,7 @@

    McpResource.php : - 29 + 30
    @@ -356,7 +356,7 @@

    McpResource.php : - 30 + 31
    @@ -391,7 +391,7 @@

    McpResource.php : - 31 + 32
    @@ -426,7 +426,7 @@

    McpResource.php : - 27 + 28
    @@ -531,7 +531,7 @@

    McpResource.php : - 28 + 29
    @@ -556,6 +556,41 @@

    +
    +

    + public + $title + + +

    +
    + McpResource.php + : + 27 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public string|null $title = null
    +
    +
    +
    + +

    public @@ -621,7 +656,7 @@

    -
    public __construct(array<int, string> $servers, string $uri[, string|null $name = null ][, string|null $description = null ][, string|null $mimeType = null ][, int|null $size = null ][, Annotations|null $annotations = null ][, array<string|int, Icon>|null $icons = null ][, array<string, mixed>|null $meta = null ])
    +
    public __construct(array<int, string> $servers, string $uri[, string|null $name = null ][, string|null $description = null ][, string|null $title = null ][, string|null $mimeType = null ][, int|null $size = null ][, Annotations|null $annotations = null ][, array<string|int, Icon>|null $icons = null ][, array<string, mixed>|null $meta = null ])
    @@ -696,6 +731,20 @@

    Parameters

    - + + + + $title + + + string|null + + + null + + + - + @@ -830,6 +879,11 @@

    Parameters

    size + +
  • + + title +
  • diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpResourceTemplate.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpResourceTemplate.html index 845fcbbb82..a72813e59f 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpResourceTemplate.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpResourceTemplate.html @@ -286,7 +286,7 @@

    McpResourceTemplate.php : - 27 + 28

  • @@ -356,7 +356,7 @@

    McpResourceTemplate.php : - 28 + 29
    @@ -391,7 +391,7 @@

    McpResourceTemplate.php : - 26 + 27
    @@ -486,6 +486,41 @@

    +
    +

    + public + $title + + +

    +
    + McpResourceTemplate.php + : + 26 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public string|null $title = null
    +
    +
    +
    + +

    public @@ -551,7 +586,7 @@

    -
    public __construct(array<int, string> $servers, string $uriTemplate[, string|null $name = null ][, string|null $description = null ][, string|null $mimeType = null ][, Annotations|null $annotations = null ][, array<string, mixed>|null $meta = null ])
    +
    public __construct(array<int, string> $servers, string $uriTemplate[, string|null $name = null ][, string|null $description = null ][, string|null $title = null ][, string|null $mimeType = null ][, Annotations|null $annotations = null ][, array<string, mixed>|null $meta = null ])
    @@ -626,6 +661,20 @@

    Parameters

    - + + + + $title + + + string|null + + + null + + + - + @@ -722,6 +771,11 @@

    Parameters

    servers + +
  • + + title +
  • diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpTool.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpTool.html index 7a08272ebc..bd17f8f254 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpTool.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-Attribute-McpTool.html @@ -286,7 +286,7 @@

    McpTool.php : - 27 + 28

  • @@ -356,7 +356,7 @@

    McpTool.php : - 28 + 29
    @@ -391,7 +391,7 @@

    McpTool.php : - 29 + 30
    @@ -461,7 +461,7 @@

    McpTool.php : - 30 + 31
    @@ -521,6 +521,41 @@

    +
    +

    + public + $title + + +

    +
    + McpTool.php + : + 27 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public string|null $title = null
    +
    +
    +
    + +

    @@ -551,7 +586,7 @@

    -
    public __construct([array<int, string> $servers = [] ][, string|null $name = null ][, string|null $description = null ][, ToolAnnotations|null $annotations = null ][, array<string|int, Icon>|null $icons = null ][, array<string, mixed>|null $meta = null ][, array<string, mixed>|null $outputSchema = null ])
    +
    public __construct([array<int, string> $servers = [] ][, string|null $name = null ][, string|null $description = null ][, string|null $title = null ][, ToolAnnotations|null $annotations = null ][, array<string|int, Icon>|null $icons = null ][, array<string, mixed>|null $meta = null ][, array<string, mixed>|null $outputSchema = null ])
    @@ -616,6 +651,20 @@

    Parameters

    - + + + + $title + + + string|null + + + null + + + - + @@ -731,6 +780,11 @@

    Parameters

    servers + +
  • + + title +
  • diff --git a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-McpServerConfiguration.html b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-McpServerConfiguration.html index 1c6afb58b9..16387bbe89 100644 --- a/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-McpServerConfiguration.html +++ b/docs/api/php_api/php_api_reference/classes/Ibexa-Contracts-Mcp-McpServerConfiguration.html @@ -253,12 +253,82 @@

    +

    + Constants +

    +
    +

    + publicDEFAULT_ALLOWED_HOSTS +

    +
    + McpServerConfiguration.php + : + 19 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public array<string|int, mixed> DEFAULT_ALLOWED_HOSTS = ['localhost', '127.0.0.1', '[::1]']
    +
    +
    +
    + +

    Properties

    +

    + public + $allowedHosts + + +

    +
    + McpServerConfiguration.php + : + 35 + +
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    public array<string|int, mixed>|null $allowedHosts = self::DEFAULT_ALLOWED_HOSTS
    +
    +
    +
    + + +

    public $description @@ -268,7 +338,7 @@

    McpServerConfiguration.php : - 29 + 33

    @@ -303,7 +373,7 @@

    McpServerConfiguration.php : - 27 + 31
    @@ -338,7 +408,7 @@

    McpServerConfiguration.php : - 25 + 29
    @@ -373,7 +443,7 @@

    McpServerConfiguration.php : - 30 + 34
    @@ -408,7 +478,7 @@

    McpServerConfiguration.php : - 26 + 30
    @@ -443,7 +513,7 @@

    McpServerConfiguration.php : - 32 + 37
    @@ -478,7 +548,7 @@

    McpServerConfiguration.php : - 33 + 38
    @@ -513,7 +583,7 @@

    McpServerConfiguration.php : - 34 + 39
    @@ -548,7 +618,7 @@

    McpServerConfiguration.php : - 31 + 36
    @@ -583,7 +653,7 @@

    McpServerConfiguration.php : - 28 + 32
    @@ -622,7 +692,7 @@

    McpServerConfiguration.php : - 24 + 28
    @@ -638,7 +708,7 @@

    -
    public __construct(string $identifier, string $path, bool $enabled[, string $version = '1.0.0' ][, string|null $description = null ][, string|null $instructions = null ][, array<string, Tool$tools = [] ][, array<string, Prompt$prompts = [] ][, array<string, resource> $resources = [] ][, array<string, ResourceTemplate$resourceTemplates = [] ])
    +
    public __construct(string $identifier, string $path, bool $enabled[, string $version = '1.0.0' ][, string|null $description = null ][, string|null $instructions = null ][, array<int, string>|null $allowedHosts = \self::DEFAULT_ALLOWED_HOSTS ][, array<string, Tool$tools = [] ][, array<string, Prompt$prompts = [] ][, array<string, ResourceDefinition$resources = [] ][, array<string, ResourceTemplate$resourceTemplates = [] ])
    @@ -741,6 +811,20 @@

    Parameters

    - + + + + $allowedHosts + + + array<int, string>|null + + + McpServerConfiguration::DEFAULT_ALLOWED_HOSTS + + + - + @@ -783,7 +867,7 @@

    Parameters

    $resources - array<string, resource> + array<string, ResourceDefinition> [] @@ -832,6 +916,20 @@

    Parameters

      +
    • + + Constants + + +
    • Properties @@ -839,6 +937,11 @@

      Parameters