3brs/sylius-analytics-plugin

Analytics tracking plugin for Sylius front store and product views.

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Type:sylius-plugin

dev-main 2025-07-09 10:20 UTC

This package is auto-updated.

Last update: 2025-07-16 17:01:59 UTC


README

Sylius Analytics Plugin

Features

  • Asynchronously logs visits to all frontend pages (excluding admin)
  • Tracks visitor data: channel, full URL, route name, customer, session ID, IP address, user agent, and timestamp
  • Displays:
    • Most requested pages in the last X days (configurable)
    • Request counts on product detail pages
    • Full log of requests with filtering capabilities inside the admin panel
  • Built on top of Symfony Messenger for asynchronous processing

Installation

  1. Run composer require 3brs/sylius-analytics-plugin.

  2. Register ThreeBRS\SyliusAnalyticsPlugin\ThreeBRSSyliusAnalyticsPlugin::class => ['all' => true], in your config/bundles.php.

  3. Import the plugin's routing files in config/routes.yaml:

    threebrs_statistics_plugin_routing_file:
        resource: "@ThreeBRSSyliusAnalyticsPlugin/config/routes.yaml"
        prefix: '%sylius_admin.path_name%'
  4. Messenger Transport Configuration

    This plugin uses Symfony Messenger to log requests.

    Default Behavior (Synchronous)

    • By default, the plugin uses synchronous processing via the sync:// DSN. This means that log messages are processed immediately, without requiring any queue or worker. This is ideal for development and testing environments.

    • To enable this mode, set the following in your .env:

    THREEBRS_MESSENGER_TRANSPORT_LOG_VISIT_DSN=sync://
    • For better performance in production or staging environments, you can configure the plugin to log requests asynchronously using a queue (e.g., Doctrine transport)
    THREEBRS_MESSENGER_TRANSPORT_LOG_VISIT_DSN=doctrine://default
    • After setting this, you must run the Messenger worker to process the queued log messages:
    bin/console messenger:consume log_visit -vv
    • Only use this mode if your project supports background workers and a transport like Doctrine, Redis, etc.
  5. Configure how many past days are considered when calculating the “Most Visited Pages” in the admin dashboard by setting the following parameter:

    parameters:
        threebrs_analytics_plugin.request_log_days: 7 # Change as needed
  6. Generate and run Doctrine migrations:

    bin/console doctrine:migrations:diff 
    bin/console doctrine:migrations:migrate
  7. Optional: Enable UTF-8 support in routing for better slug handling (diacritics, etc.):

    # config/packages/routing.yaml
    framework:
        router:
            utf8: true

Usage

The plugin will automatically log requests on:

  • Homepage
  • Product detail pages
  • Category pages
  • Cart pages
  • Other shop pages

You can view the statistics inside the admin panel under the Analytics section.
Log processing is handled via Symfony Messenger, either synchronously (by default) or asynchronously if a queue is configured.

Development

Usage

  • Develop your plugin logic inside /src
  • See bin/ for useful dev tools

Testing

After making changes, make sure tests and checks pass:

composer install
bin/phpstan.sh
bin/ecs.sh

License

This library is under the MIT license.

Credits

Developed by 3BRS