--- title: "Page" slug: "page-data-object-php-library-s2s" description: "Track page requests with the PHP library: page name, internal search, page parameters, content groups and goals via MappIntelligencePage." status: "update" updated: 2026-11-02T16:58:30Z published: 2026-11-02T16:58:30Z canonical: "docs.mapp.com/page-data-object-php-library-s2s" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.mapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Page Page requests send page-related data such as the page name, parameters, or categories to Mapp Intelligence. These elements help structure your website tracking and enable deeper analysis of user behavior. This configuration applies to Server-to-Server integrations. --- ## Page Naming By default, the library derives the page name from the URL, excluding any parameters. For example, a URL like www.website.com/product_abc.htm?sid=7af49 is tracked as www.website.com/product_abc.htm. If you want to use a custom name, define it with setName. When left blank, the library automatically generates the page name. --- ## Categories (Content Groups) Categories (also known as *content groups*) classify pages into structured groups. These groups must be configured in Mapp Q3 before they can be tracked via the library. Find more information [here](/v1/docs/how-to-set-up-categories). When implementing, include the **ID number** and the respective **value** as a string. The value should not exceed 255 characters; additional characters are truncated. > [!NOTE] > Note > > Content groups are assigned once to a page. If a page is tracked with a content group, all subsequent page calls will also be assigned to this content group. Only the first tracked value will be shown. Mapp therefore recommends implementing content IDs and content groups while embedding the library. See also [How can I replace missing values ("-") in categories?](/v1/docs/how-can-i-replace-missing-values-in-categories) Mapp recommends implementing content IDs and content groups during the initial library setup. --- ## Page Parameters Page parameters refer to individual pages and can pass different values with each request. Unlike content groups, parameters can vary between page calls, making them useful for dynamic content or detailed tracking. They must also be configured in Mapp Q3 before tracking. Find more information [here](/v1/docs/how-to-set-up-custom-parameters). When implementing, include the **ID number** and the **value** as a string. --- ## Goals Website goals measure the success of specific actions on your website. They allow you to analyze user behavior and attribute conversions to campaigns. Goals must be configured before they can be tracked via the library. Find more information [here](/v1/docs/how-to-define-website-goals). When configuring tracking, include the **goal ID** and the **value** as a string. Each goal is considered achieved as soon as a value is tracked—regardless of the actual content of that value. > [!NOTE] > Note > > The predefined goal Order cannot be tracked within the page object. > > Avoid submitting values like "no" for goals such as Newsletter Registration, as this would still mark the goal as achieved. --- **Supported Methods** | **Method** | **Description** | **Where to configure *** | **Where to analyze** | | --- | --- | --- | --- | | **constructor** | Defines the initial page request and can overwrite the default page naming. | – | *Navigation > Pages > Pages* | | **setName** | Overwrites the default page naming. | – | *Navigation > Pages > Pages* | | **setSearch** | Tracks search terms entered in the internal website search. | – | *Marketing > Search Phrases > Internal Search Phrases* | | **setNumberSearchResults** | Tracks the number of results returned for an internal search query. | PP > Number of search results | Metric: [Name of Parameter] | | **setErrorMessages** | Tracks system or content-related error messages. | PP > Error messages | *Navigation > Page Parameters > [Name]* | | **setPaywall** | Tracks whether an article is behind a paywall. | PP > Paywall calls | *Navigation > Page Parameters > [Name]* | | **setArticleTitle** | Captures the article headline. | PP > Article heading | *Navigation > Page Parameters > [Name]* | | **setContentTags** | Tracks article tags or keywords. | PP > Content tags | *Navigation > Page Parameters > [Name]* | | **setTitle** | Captures the page title for reporting and analysis. | PP > Page title | *Navigation > Page Parameters > [Name]* | | **setType** | Defines the page type (e.g. “overview”). | PP > Page type | *Navigation > Page Parameters > [Name]* | | **setLength** | Classifies the page length (e.g. “large”). | PP > Page length | *Navigation > Page Parameters > [Name]* | | **setDaysSincePublication** | Tracks how many days have passed since publication. | PP > Days since publication | *Navigation > Page Parameters > [Name]* | | **setTestVariant** | Stores the name of a test variant (A/B testing). | PP > Variant | *Navigation > Page Parameters > [Name]* | | **setTestExperiment** | Stores the name of an experiment (A/B testing). | PP > Experiment | *Navigation > Page Parameters > [Name]* | | **setParameter** | Tracks custom page-specific information or metrics defined by the website. | PP > Own Configuration | Text: *Navigation > Page Parameters > [Name]* / Number: Metric | | **setCategory** | Groups pages into structured website sections (*Content Groups*). | CG > New Category | Text: *Navigation > Content Groups > [Name]* / Number: Metric | | **setGoal** | Tracks website goals such as registrations or purchases. | EC > Own Configuration | Text: *E-Commerce > E-Commerce Parameters > [Name]* / Number: Metric | * **Configuration Path Abbreviations:** - **PP** = *Mapp Q3 > Configuration > Custom Parameters > Page Parameters > Preconfigured > …* - **CG** = *Mapp Q3 > Configuration > Categories > Content Groups > …* - **EC** = *Mapp Q3 > Configuration > Custom Parameters > E-Commerce Parameters > Preconfigured > …* #### Generated request parameters | **Method** | **Request parameter** | **Constant** | | --- | --- | --- | | **constructor** / **setName** | part of `p` (`p=600,<name>,...`) | `PAGE_NAME` | | **setSearch** | `is` | `SEARCH` | | **setNumberSearchResults** | `cp771` | `NUMBER_SEARCH_RESULTS` | | **setErrorMessages** | `cp772` | `ERROR_MESSAGES` | | **setPaywall** | `cp773` | `PAYWALL` | | **setArticleTitle** | `cp774` | `ARTICLE_TITLE` | | **setContentTags** | `cp775` | `CONTENT_TAGS` | | **setTitle** | `cp776` | `PAGE_TITLE` | | **setType** | `cp777` | `PAGE_TYPE` | | **setLength** | `cp778` | `PAGE_LENGTH` | | **setDaysSincePublication** | `cp779` | `DAYS_SINCE_PUBLICATION` | | **setTestVariant** | `cp781` | `TEST_VARIANT` | | **setTestExperiment** | `cp782` | `TEST_EXPERIMENT` | | **setParameter** | `cp<ID>` | `CUSTOM_PAGE_PARAMETER` | | **setCategory** | `cg<ID>` | `CUSTOM_PAGE_CATEGORY` | | **setGoal** | `cb<ID>` | `CUSTOM_PRODUCT_PARAMETER` | > [!NOTE] > Note > > Values that are empty or exactly `0`, `0.0`, `false` or `{}` are not transmitted. For example, `setPaywall(false)` and `setNumberSearchResults(0)` are not sent, and neither is a parameter, category or goal with the value `0` or `false`. To transmit such a value, send the request with a parameter map (see Request Parameters). **Methods** #### constructor ```php /** * MappIntelligencePage constructor. * @param string $name */ $pageData = new MappIntelligencePage($name); ``` #### setName ```php /** * @param string $name * @return $this */ $pageData->setName($name); ``` Without a name (or with an empty name), the library uses the default page name: the request URL without protocol and URL parameters, in lower case. The request URL is the one set with `setRequestURL`, by default the URL of the current request (see [Integration and Configuration](/v1/docs/php-integration-and-configuration)). URL parameters listed in `setUseParamsForDefaultPageName` are appended if they have a value in the request URL. Without a request URL, the page name is `0`. #### setSearch ```php /** * @param string $search * @return $this */ $pageData->setSearch($search); ``` #### setNumberSearchResults ```php /** * @param int $numberSearchResults * @return $this */ $pageData->setNumberSearchResults($numberSearchResults); ``` #### setErrorMessages ```php /** * @param string $errorMessages * @return $this */ $pageData->setErrorMessages($errorMessages); ``` #### setPaywall ```php /** * @param bool $paywall * @return $this */ $pageData->setPaywall($paywall); ``` #### setArticleTitle ```php /** * @param string $articleTitle * @return $this */ $pageData->setArticleTitle($articleTitle); ``` #### setContentTags ```php /** * @param string $contentTags * @return $this */ $pageData->setContentTags($contentTags); ``` #### setTitle ```php /** * @param string $title * @return $this */ $pageData->setTitle($title); ``` #### setType ```php /** * @param string $type * @return $this */ $pageData->setType($type); ``` #### setLength ```php /** * @param string $length * @return $this */ $pageData->setLength($length); ``` #### setDaysSincePublication ```php /** * @param int $daysSincePublication * @return $this */ $pageData->setDaysSincePublication($daysSincePublication); ``` #### setTestExperiment ```php /** * @param string $testExperiment * @return $this */ $pageData->setTestExperiment($testExperiment); ``` #### setTestVariant ```php /** * @param string $testVariant * @return $this */ $pageData->setTestVariant($testVariant); ``` #### setParameter ```php /** * @param int $id * @param string $value * @return $this */ $pageData->setParameter($id, $value); ``` The IDs 771 to 779, 781 and 782 are used by the predefined page parameters (`setNumberSearchResults` to `setTestExperiment`). Do not use them with `setParameter`, otherwise one value overwrites the other. #### setCategory ```php /** * @param int $id * @param string $value * @return $this */ $pageData->setCategory($id, $value); ``` #### setGoal ```php /** * @param int $id * @param string $value * @return $this */ $pageData->setGoal($id, $value); ``` Goals are sent as E-Commerce Parameters (`cb<ID>`). Page goals, event goals, order parameters and product parameters share these IDs: if several of them use the same ID in one request, only one value is sent. **Example** ```php $pageData = new MappIntelligencePage('name'); $pageData    ->setName('name of a page')    ->setSearch('search term')    ->setNumberSearchResults(15)    ->setErrorMessages('error message')    ->setPaywall(true)    ->setArticleTitle('name of an article')    ->setContentTags('name of a content tag')    ->setTitle('title of a page')    ->setType('type of a page')    ->setLength('large')    ->setDaysSincePublication(8)    ->setTestVariant('name of a variant')    ->setTestExperiment('name of an experiment')    ->setParameter(1, 'parameter 1')    ->setParameter(2, 'parameter 2')    ->setCategory(1, 'category 1')    ->setCategory(2, 'category 2')    ->setGoal(1, 'goal 1')    ->setGoal(2, 'goal 2'); $mappIntelligence = MappIntelligence::getInstance(); $mappIntelligence->track((new MappIntelligenceDataMap())->page($pageData)); ```