{"id":32305422,"url":"https://github.com/floating-dartists/matomo-tracker","last_synced_at":"2025-10-23T06:51:06.678Z","repository":{"id":37962502,"uuid":"480803004","full_name":"Floating-Dartists/matomo-tracker","owner":"Floating-Dartists","description":"A fully cross-platform wrap of the Matomo tracking client for Flutter, using the Matomo API.","archived":false,"fork":false,"pushed_at":"2025-09-21T13:02:26.000Z","size":830,"stargazers_count":31,"open_issues_count":4,"forks_count":35,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-21T15:06:36.855Z","etag":null,"topics":["dart","flutter","matomo","matomo-plugin","matomo-tracking"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/matomo_tracker","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Floating-Dartists.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-04-12T12:34:54.000Z","updated_at":"2025-09-15T12:49:35.000Z","dependencies_parsed_at":"2024-04-15T11:25:51.842Z","dependency_job_id":"01fa7471-aa4a-4333-b87a-858b218cdb13","html_url":"https://github.com/Floating-Dartists/matomo-tracker","commit_stats":{"total_commits":192,"total_committers":23,"mean_commits":8.347826086956522,"dds":0.5677083333333333,"last_synced_commit":"ff32034b62c68e33818de65f7a94453bc9431f04"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/Floating-Dartists/matomo-tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Floating-Dartists%2Fmatomo-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Floating-Dartists%2Fmatomo-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Floating-Dartists%2Fmatomo-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Floating-Dartists%2Fmatomo-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Floating-Dartists","download_url":"https://codeload.github.com/Floating-Dartists/matomo-tracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Floating-Dartists%2Fmatomo-tracker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280577134,"owners_count":26354072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-23T02:00:06.710Z","response_time":142,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","flutter","matomo","matomo-plugin","matomo-tracking"],"created_at":"2025-10-23T06:51:00.765Z","updated_at":"2025-10-23T06:51:06.669Z","avatar_url":"https://github.com/Floating-Dartists.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Matomo Tracker\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Floating-Dartists\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/Floating-Dartists/fd_template/main/assets/Transparent-light.png\" alt=\"Floating Dartists\" width=\"600\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n[![Pub Version (including pre-releases)](https://img.shields.io/pub/v/matomo_tracker?include_prereleases)](https://pub.dev/packages/matomo_tracker)\n[![Matomo Integrations](https://img.shields.io/badge/featured%20on-Matomo-blue)](https://matomo.org/integrate/)\n[![GitHub license](https://img.shields.io/github/license/Floating-Dartists/matomo-tracker)](https://github.com/Floating-Dartists/matomo-tracker/blob/main/LICENSE)\n[![Coverage Status](https://coveralls.io/repos/github/Floating-Dartists/matomo-tracker/badge.svg?branch=main)](https://coveralls.io/github/Floating-Dartists/matomo-tracker?branch=main)\n\nForked from the package [matomo](https://pub.dev/packages/matomo) by [poitch](https://github.com/poitch).\n\nA fully cross-platform wrap of the Matomo tracking client for Flutter, using the [Matomo Tracking API](https://developer.matomo.org/api-reference/tracking-api).\n\n# Summary\n\n- [Documentation](#documentation)\n  - [Supported Matomo Versions](#supported-matomo-versions)\n  - [Getting Started](#getting-started)\n  - [Using userId](#using-userid)\n  - [Opting Out](#opting-out)\n  - [Using Dimensions](#using-dimensions)\n  - [Cookieless Tracking](#cookieless-tracking)\n  - [Dispatching](#dispatching)\n- [Migration Guide](#migration-guide)\n    - [v6.0.0](#v600)\n    - [v5.0.0](#v500)\n    - [v4.0.0](#v400)\n    - [v3.0.0](#v300)\n- [Contributors](#contributors)\n\n# Documentation\n\n## Supported Matomo Versions\n\nThis package (matomo_tracker v5.0.0) currently supports Matomo 4.X up to Matomo 5.X.\n\n## Getting Started\n\nAs early as possible in your application, you need to configure the Matomo Tracker to pass the URL endpoint of your instance and your Site ID.\n\n```dart\nawait MatomoTracker.instance.initialize(\n    siteId: siteId,\n    url: 'https://example.com/matomo.php',\n);\n```\n\nIf you need to use your own Visitor ID, you can pass it at the initialization of MatomoTracker as is:\n\n```dart\nawait MatomoTracker.instance.initialize(\n    siteId: siteId,\n    url: 'https://example.com/matomo.php',\n    visitorId: '2589631479517535',\n);\n```\nNote that this Visitor ID should not be confused with the User ID which is explained below!\n\n## Navigator Observers\n\nThe package provides you with two ways to track views:\n\n### `MatomoGlobalObserver`\n\nTo track views globally, you can add the `MatomoGlobalObserver` to your `navigatorObservers`:\n\n```dart\nMaterialApp(\n    // ...\n    navigatorObservers: [\n        MatomoGlobalObserver(),\n    ],\n);\n```\n\nAnd your views will be tracked automatically for each route change.\n\n### `TraceableClientMixin` \u0026 `TraceableWidget`\n\nThose are used if you want to only track some specific widgets. First, you will have to add `matomoLocalObserver` to your `navigatorObservers`:\n\n```dart\nMaterialApp(\n    // ...\n    navigatorObservers: [\n        matomoLocalObserver,\n    ],\n);\n```\n\nTo track views on a `StatefulWidget` simply add `TraceableClientMixin` on your `State`:\n\n```dart\nclass MyHomePage extends StatefulWidget {\n  const MyHomePage({Key key, this.title}) : super(key: key);\n\n  final String title;\n\n  @override\n  _MyHomePageState createState() =\u003e _MyHomePageState();\n}\n\nclass _MyHomePageState extends State\u003cMyHomePage\u003e with TraceableClientMixin {\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      appBar: AppBar(\n        title: Text(widget.title),\n      ),\n      body: Center(\n        child: Text('Hello World!'),\n      ),\n    );\n  }\n\n  @override\n  String get actionName =\u003e 'Created HomePage'; // optional\n\n  @override\n  String get path =\u003e '/home'; // optional\n}\n```\n\nIf you are in a `StatelessWidget` you can use the `TraceableWidget` widget:\n\n```dart\nclass MyHomePage extends StatelessWidget {\n  const MyHomePage({Key key, this.title}) : super(key: key);\n\n  final String title;\n\n  @override\n  Widget build(BuildContext context) {\n    return TraceableWidget(\n      actionName: 'Created HomePage', // optional\n      path: '/home', // optional\n      child: Scaffold(\n        appBar: AppBar(\n          title: Text(title),\n        ),\n        body: Center(\n          child: Text('Hello World!'),\n        ),\n      ),\n    );\n  }\n}\n```\n\nYou can also optionally call directly `trackPageView` or `trackPageViewWithName` to track a view.\n\nFor tracking goals and, events call `trackGoal` and `trackEvent` respectively.\n\nA value can be passed for events:\n\n```dart\nMatomoTracker.instance.trackEvent(\n    eventInfo: EventInfo(\n        category: 'eventCategory',\n        name: 'eventName',\n        action: 'eventAction',\n        value: 18,\n    ),\n);\n```\n\n## Using userId\n\nIf your application uses authentication and you wish to have your visitors including their specific identity to Matomo, you can use the Visitor property userId with any unique identifier from your back-end, by calling the setVisitorUserId() method. Here's an example on how to do it with Firebase:\n\n```dart\n  String userId = auth.currentUser?.email ?? auth.currentUser!.uid;\n  MatomoTracker.instance.setVisitorUserId(userId);\n```\n\n## Opting Out\n\nIf you want to offer a way for the user to opt out of analytics, you can use the `setOptOut()` call.\n\n```dart\nMatomoTracker.instance.setOptOut(optout: true);\n```\n\n## Using Dimensions\n\nIf you want to track Visit or Action dimensions you can either use the `trackDimensions` (if \nit's a Visit level dimension) or provide data in the optional dimensions param of `trackEvent`\n(if it's an Action level dimension):\n\n```dart\nMatomoTracker.instance.trackDimensions({\n  'dimension1': '0.0.1'\n});\n```\n\n```dart\nMatomoTracker.instance.trackEvent(\n    eventInfo: EventInfo(\n        category: \"eventCategory\",\n        action: \"eventAction\",\n        name: \"eventName\",\n        value: 18,\n    ),\n    dimensions: {'dimension2':'guest-user'}\n);\n```\n\nYou can similarly track dimensions on Screen views with:\n\n```dart\nMatomoTracker.instance.trackPageViewWithName(\n    actionName: \"Settings\",\n    path: \"/settings\",\n    dimensions: {'dimension1': '0.0.1'}\n);\n```\n\nThe naming of the dimensions is important and explained in more detail in the documentation of [`trackDimensions`](https://pub.dev/documentation/matomo_tracker/latest/matomo_tracker/MatomoTracker/trackDimensions.html).\n\n## Cookieless Tracking\n\nIf you want to use cookieless tracking, you can use the `cookieless` property in the `initialize` method.\n\n```dart\nawait MatomoTracker.instance.initialize(\n    siteId: siteId,\n    url: 'https://example.com/matomo.php',\n    cookieless: true,\n);\n```\n\nWhen using cookieless tracking, the user_id won't be sent or saved locally.\n\n## Dispatching\n\nActions logged are not send to Matomo immediately, but are queued for a configurable duration (defaulting to 10 seconds) before beeing send in batch. A user could terminate your app while there are still undispatched actions in the queue, which by default would be lost. The queue can be configured to be persistent so that such actions would then be send on the next app launch. See the [`DispatchSettings`](https://pub.dev/documentation/matomo_tracker/latest/matomo_tracker/DispatchSettings-class.html) class for more configuration options.\n\n```dart\nawait MatomoTracker.instance.initialize(\n    siteId: siteId,\n    url: 'https://example.com/matomo.php',\n    dispatchSettings: const DispatchSettings.persistent(),\n);\n```\n\n# Migration Guide\n\n## v6.0.0\n\n* `matomoObserver` has been deprecated and will be removed in the next major version. You should now use `matomoLocalObserver`.\n\n### Before\n\n```dart\nMaterialApp(\n    // ...\n    navigatorObservers: [\n        matomoObserver,\n    ],\n);\n```\n\n### After\n\n```dart\nMaterialApp(\n    // ...\n    navigatorObservers: [\n        matomoLocalObserver,\n    ],\n);\n```\n\n## v5.0.0\n\n* `Session` class and its related properties `firstVisit`, `lastVisit` and `visitCount` have been removed as they were not used since Matomo 4.0.0.\n* `LocalStorage` methods `getFirstVisit`, `setFirstVisit`, `getVisitCount` and `setVisitCount` have been removed accordingly.\n* `siteId` is now a `String` instead of an `int`\n\n## v4.0.0\n\n* `trackScreen` was renamed to `trackPageView` and `trackScreenWithName` to `trackPageViewWithName`.\n* `screenId` and `widgetId` were renamed to `pvId`.\n* `userId` was renamed to `uid`.\n* `traceName` and `widgetName` were renamed to `actionName`.\n* `traceTitle` was renamed to `eventName`.\n* `forcedId` property has been removed as it was never used. You should rely on the user ID instead.\n* An object of type `EventInfo` has been added, it has the following properties: `category`, `action`, `name` and `value`, use it instead of passing the event name, action and value as separate parameters.\n* For `TraceableClientMixin` and `TraceableWidget` to work you will have to add the `matomoObserver` to your `MaterialApp` or `WidgetsApp`:\n```dart\nMaterialApp(\n    // ...\n    navigatorObservers: [\n        matomoObserver,\n    ],\n);\n```\n* `MatomoEvent` has been renamed to `MatomoAction`\n* `trackPageView` positional parameter `context` is now a named parameter\n* `trackGoal` positional parameter `goalId` is now a named parameter: `id`\n* `trackDimensions` positional parameter `dimensions` is now a named parameter\n* `trackCartUpdate` positional parameters `trackingOrderItems`, `subTotal`, `taxAmount`, `shippingCost` and `discountAmount` are now named parameters\n* `trackOrder` positional parameters `orderId` (now `id`), `trackingOrderItems`, `revenue` (also became a `double`), `subTotal`, `taxAmount`, `shippingCost` and `discountAmount` are now named parameters\n* `trackOutlink` positional parameter `link` is now a named required parameter (also changed the type to `String`)\n\n## v3.0.0\n\nNow the `initialize()` method takes a `LocalStorage? localStorage` instead of a `SharedPreferences? prefs` as its parameter to override the persistent data implementation.\n\nBy default it will use an implementation of [shared_preferences](https://pub.dev/packages/shared_preferences) with the class `SharedPrefsStorage`, but you can provide your own implementation of `LocalStorage` to use a different package.\n\n### Before\n\n```dart\nfinal myPrefs = await SharedPreferences.getInstance();\n\nawait MatomoTracker.instance.initialize(\n    siteId: siteId,\n    url: 'https://example.com/matomo.php',\n    prefs: myPrefs,\n);\n```\n\n### After\n\n```dart\nclass MyLocalStorage implements LocalStorage {\n    MyLocalStorage();\n\n    // ...\n}\n\nfinal myStorage = MyLocalStorage();\n\nawait MatomoTracker.instance.initialize(\n    siteId: siteId,\n    url: 'https://example.com/matomo.php',\n    localStorage: myStorage,\n);\n```\n\n**Note that if you weren't using a custom instance of `SharedPreferences` before, you don't need to change anything. The default behavior still works.**\n\n```dart\nawait MatomoTracker.instance.initialize(\n    siteId: siteId,\n    url: 'https://example.com/matomo.php',\n);\n```\n\n# Contributors\n\n\u003c!-- readme: contributors -start --\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/TesteurManiak\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/14369698?v=4\" width=\"100;\" alt=\"TesteurManiak\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eGuillaume Roux\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/EPNW-Eric\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/123490368?v=4\" width=\"100;\" alt=\"EPNW-Eric\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/Pierre-Monier\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/65488471?v=4\" width=\"100;\" alt=\"Pierre-Monier\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003ePierre Monier\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/poitch\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/80989?v=4\" width=\"100;\" alt=\"poitch\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eJêrôme Poichet\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/M123-dev\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/39344769?v=4\" width=\"100;\" alt=\"M123-dev\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eMarvin Möltgen\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/krille-chan\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/24619905?v=4\" width=\"100;\" alt=\"krille-chan\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eKrille-chan\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/scolnet\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/79212486?v=4\" width=\"100;\" alt=\"scolnet\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eScolnet\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/MeixDev\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/14351291?v=4\" width=\"100;\" alt=\"MeixDev\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eMeï\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/KawachenCofinpro\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/56601057?v=4\" width=\"100;\" alt=\"KawachenCofinpro\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/stefan01\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/1234184?v=4\" width=\"100;\" alt=\"stefan01\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/petcupaula\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/12584735?v=4\" width=\"100;\" alt=\"petcupaula\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003ePaula Petcu\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/stefangaller\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/1914504?v=4\" width=\"100;\" alt=\"stefangaller\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eStefan Galler\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/luckyrat\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/1211375?v=4\" width=\"100;\" alt=\"luckyrat\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eChris Tomlinson\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/CleverUnderDog\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/37074703?v=4\" width=\"100;\" alt=\"CleverUnderDog\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/JohannSchramm\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/43448334?v=4\" width=\"100;\" alt=\"JohannSchramm\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eJohann Schramm\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/lsaudon\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/25029876?v=4\" width=\"100;\" alt=\"lsaudon\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eLsaudon\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/kuhnroyal\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/1260818?v=4\" width=\"100;\" alt=\"kuhnroyal\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003ePeter Leibiger\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/streinhard\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/12693991?v=4\" width=\"100;\" alt=\"streinhard\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eStefan Reinhard\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/zvikarp\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/13397207?v=4\" width=\"100;\" alt=\"zvikarp\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eZvi Karp\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/tfreebern2\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/20588863?v=4\" width=\"100;\" alt=\"tfreebern2\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eTimothy Freebern II\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/Bendix20\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/52244034?v=4\" width=\"100;\" alt=\"Bendix20\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/Hyla96\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/16517737?v=4\" width=\"100;\" alt=\"Hyla96\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eGabriel Costache\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/hpoul\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/313066?v=4\" width=\"100;\" alt=\"hpoul\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eHerbert Poul\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/jainhitesh9998\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/16622965?v=4\" width=\"100;\" alt=\"jainhitesh9998\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eHitesh C\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/JulianBissekkou\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/36447137?v=4\" width=\"100;\" alt=\"JulianBissekkou\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eJulian Bissekkou\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/krozett\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/1661295?v=4\" width=\"100;\" alt=\"krozett\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eKeith Rozett\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/lukaslihotzki\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/10326063?v=4\" width=\"100;\" alt=\"lukaslihotzki\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eLukas Lihotzki\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/skiluk\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/1120578?v=4\" width=\"100;\" alt=\"skiluk\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eSean Kiluk\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/svprdga\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/43069276?v=4\" width=\"100;\" alt=\"svprdga\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eDavid Serrano Canales\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003c!-- readme: contributors -end --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffloating-dartists%2Fmatomo-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffloating-dartists%2Fmatomo-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffloating-dartists%2Fmatomo-tracker/lists"}