PHPackages                             geekyhouse/external-tracking-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. geekyhouse/external-tracking-bundle

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

geekyhouse/external-tracking-bundle
===================================

Symfony2 bundle for manage external tracking scripts/pixel trackers.

1.3.8(10y ago)29.6kLGPL-3.0+PHPPHP &gt;=5.3.0

Since May 30Pushed 10y ago1 watchersCompare

[ Source](https://github.com/GeekyHouse/ExternalTrackingBundle)[ Packagist](https://packagist.org/packages/geekyhouse/external-tracking-bundle)[ Docs](https://github.com/GeekyHouse/ExternalTrackingBundle)[ RSS](/packages/geekyhouse-external-tracking-bundle/feed)WikiDiscussions master Synced 4d ago

READMEChangelogDependencies (5)Versions (10)Used By (0)

ExternalTrackingBundle
======================

[](#externaltrackingbundle)

Symfony2 bundle for manage external tracking scripts/pixel trackers.

[![Build Status](https://camo.githubusercontent.com/b56c851eb70458e58074a1ab79083ee1c68fb28fb0d9bf8f5202ec5533f93728/68747470733a2f2f7472617669732d63692e6f72672f4765656b79486f7573652f45787465726e616c547261636b696e6742756e646c652e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/GeekyHouse/ExternalTrackingBundle) [![Latest Stable Version](https://camo.githubusercontent.com/5ce94f9be866f6c0a125dbb0fe57ca63bba017d9725a00ca92e196bb8e309c4d/68747470733a2f2f706f7365722e707567782e6f72672f6765656b79686f7573652f65787465726e616c2d747261636b696e672d62756e646c652f762f737461626c652e737667)](https://packagist.org/packages/geekyhouse/external-tracking-bundle) [![Total Downloads](https://camo.githubusercontent.com/ebd89b77b486164dcd57b3a22017d1da57fc6290c5bf9c43cced9d41b31e291f/68747470733a2f2f706f7365722e707567782e6f72672f6765656b79686f7573652f65787465726e616c2d747261636b696e672d62756e646c652f646f776e6c6f6164732e737667)](https://packagist.org/packages/geekyhouse/external-tracking-bundle) [![Latest Unstable Version](https://camo.githubusercontent.com/226e85aca6f9c9d4cdabc429540e3776116dee1da339101ca97bfe1579ade9d2/68747470733a2f2f706f7365722e707567782e6f72672f6765656b79686f7573652f65787465726e616c2d747261636b696e672d62756e646c652f762f756e737461626c652e737667)](https://packagist.org/packages/geekyhouse/external-tracking-bundle) [![License](https://camo.githubusercontent.com/3dbd9581a31ab68c6062e3f7f32bd7a03a9199f53bd2bc4a3b138c86c99dda32/68747470733a2f2f706f7365722e707567782e6f72672f6765656b79686f7573652f65787465726e616c2d747261636b696e672d62756e646c652f6c6963656e73652e737667)](https://packagist.org/packages/geekyhouse/external-tracking-bundle) [![Dependency Status](https://camo.githubusercontent.com/3a196c85bcabae410d41677ef9b9562b728424fc36822c9acf207aae588e73e8/68747470733a2f2f7777772e76657273696f6e6579652e636f6d2f7068702f6765656b79686f7573653a65787465726e616c2d747261636b696e672d62756e646c652f6465762d6d61737465722f62616467652e737667)](https://www.versioneye.com/php/geekyhouse:external-tracking-bundle/dev-master)

[![knpbundles.com](https://camo.githubusercontent.com/f2fda504a0770dca9dd5bef62bd48ed0b337623f82ca1a8d6f4f128c1290e29a/687474703a2f2f6b6e7062756e646c65732e636f6d2f4765656b79486f7573652f45787465726e616c547261636b696e6742756e646c652f62616467652d73686f7274)](http://knpbundles.com/GeekyHouse/ExternalTrackingBundle)

Introduction
============

[](#introduction)

This bundle allows you to manage pixeltrackers / script trackers your partners without interfering with user navigation :

- Trackers can be managed from one or more classes, and are added via an event handler.
- The display of trackers can be pushed after the page loads, or even with a timer
- No more dependence to any JavaScript framework ;)

Installation
============

[](#installation)

### Composer

[](#composer)

Add to `composer.json` in your project to `require` section:

```
...
    {
        "geekyhouse/external-tracking-bundle": "dev-master"
    }
...

```

Run command: `php composer.phar install`

### Add this bundle to your application's kernel

[](#add-this-bundle-to-your-applications-kernel)

```
//app/AppKernel.php
public function registerBundles()
{
    return array(
         // ...
        new GeekyHouse\ExternalTrackingBundle\ExternalTrackingBundle(),
        // ...
    );
}
```

### Conﬁgure service in your YAML conﬁguration

[](#conﬁgure-service-in-your-yaml-conﬁguration)

You can overwrite bundle classes. Default values :

```
# app/conﬁg/conﬁg.yml
external_tracking:
	manager_class: GeekyHouse\ExternalTrackingBundle\Service\ExternalTrackingManager
	request_listener_class: GeekyHouse\ExternalTrackingBundle\EventListener\RequestListener
	extension_class: GeekyHouse\ExternalTrackingBundle\Twig\Extension\ExternalTrackingExtension

```

### Custom events listeners

[](#custom-events-listeners)

This bundle provides 2 events dispatchers that you can use :

- `geekyhouse.event.before_get_trackers` : Called first when "getTrackers" is called
- `geekyhouse.event.after_get_trackers` : Called juste before return when "getTrackers" is called

You can easily create a custom service which add datas just before writing trackers, like this :

```
# app/conﬁg/conﬁg.yml
services:
    my.custom.listener:
        class: My\Bundle\EventListener\CustomListener
        tags:
            - { name: kernel.event_listener, event: geekyhouse.event.before_get_trackers, method: beforeGetTrackers }
            - { name: kernel.event_listener, event: geekyhouse.event.after_get_trackers, method: afterGetTrackers }
        arguments: [@service_container]

```

```
// My/Bundle/EventListener/CustomListener.php
namespace My\Bundle\EventListener;

use GeekyHouse\ExternalTrackingBundle\Event\ExternalTrackingEvent;

class CustomListener
{

    private $container;

    public function __construct($container)
    {
        $this->container = $container;
    }

    public function beforeGetTrackers(ExternalTrackingEvent $event)
    {
        $UserManager = $this->container->get('my.user.manager');
        $this->ExternalTrackingManager->pushData(
            array(
                'user' => $UserManager->getCurrentUser()
            )
        );
    }

    public function afterGetTrackers(ExternalTrackingEvent $event)
    {
    }

}
```

In this example, we just add custom user datas on ExternalTrackingManager systematically.

### Twig Extension

[](#twig-extension)

A Twig extension is given by default : `GeekyHouse\ExternalTrackingBundle\Twig\Extension`

It provides the function `get_external_trackers` which write your trackers on a page.

This function takes 2 arguments :

- `onDocumentReady` *(default TRUE)* If TRUE, wait the DOM loading before writing the trackers.
- `timer` *(default 500)* The time in milliseconds to wait before writing the trackers (after DOM loading if TRUE).

Use this function on a Twig template like this :

```
# base.html.twig
[...]
    {{ get_external_trackers(true, 500)|raw }}
[...]

```

**Don't forget the `|raw`, or Twig will escape the JavaScript tags.**

It's recomended to write this line *at the end* of the page.

This extension contains a private method, `cleanJavascriptString`, whose purpose is to convert PHP string into evaluable JavaScript string. This method is in bêta test currently, please tell us if you have some problem with it :)

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity64

Established project with proven stability

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~67 days

Recently: every ~131 days

Total

9

Last Release

3832d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/6572409?v=4)[GeekyHouse](/maintainers/geekyhouse)[@GeekyHouse](https://github.com/GeekyHouse)

---

Tags

symfonytrackingexternal trackingtracker manager

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/geekyhouse-external-tracking-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/geekyhouse-external-tracking-bundle/health.svg)](https://phpackages.com/packages/geekyhouse-external-tracking-bundle)
```

###  Alternatives

[ekreative/uuid-extra-bundle

Paramconverter, Normalizer and Form Type for Ramsey Uuid

18168.6k](/packages/ekreative-uuid-extra-bundle)[anime-db/anime-db

The application for making home collection anime

252.1k2](/packages/anime-db-anime-db)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
