タグマネージャmatomo APIの使い方


概要

matomoのタグマネージャーのAPIの使い方を記載します。
一般的なWeb APIの使い方と同じですが、引数が多くややこしいので忘備録です。

matomoとは

matomoはアクセスログ解析のオープンソースです。matomoの機能の一つにタグマネージャがあります。
タグマネージャはGoogleタグマネージャが有名ですが、今回はソースコードが公開されているmatomoを使いました。
(多分Google Tag Manager APIの記事の方が需要高いだろうけど・・・笑)

タグマネージャとは

ここで言うタグとはコンバージョンタグのことで、HTMLに埋め込んでページビューなどの計測をすることができます。
タグマネージャは、コンバージョンタグを管理するためのツールです。
インターネット広告やSEO関連など、Webマーケティング業界で主に使われています。

タグとは|5分でわかるタグの基本
今さら聞けない、タグマネジメント入門基礎の基礎 - Content Hub(コンテンツハブ) | ナイル株式会社

matomo API

公式ドキュメントからAPIメソッド一覧を確認できます。
タグマネージャのメソッド一覧はこちらです。

検証環境

メソッドの説明

API共通で指定が必要な引数(パラメータ)は以下の通りです。詳しくは公式ドキュメントをご確認ください。

  • idSite
  • period
  • date
  • segment
  • format
  • filter_limit
  • token_auth

今回はトリガー作成タグ作成のみ取り上げます。
実際の管理画面を見ながらだと何の値か理解しやすいです。
管理画面で入力必須のものはAPIでも入力必須です。

管理画面から作成したトリガーやタグをgetContainerTriggers/Tagsメソッドをたたいて実際の値を確認するのも良いと思います。

TagManager.addContainerTrigger

トリガーを作成するメソッドです。
引数は以下のようになります。

  • idSite : WebsiteのID
  • idContainer : コンテナのID
  • idContainerVersion : コンテナバージョンのID
  • type : トリガーのタイプ
  • name : トリガーの名前
  • parameters : 各トリガー固有のパラメータ
  • conditions : トリガーの発火条件

参考:管理画面

TagManager.addContainerTag

タグを作成するメソッドです。
引数は以下のようになります。

  • idSite : WebsiteのID
  • idContainer : コンテナのID
  • idContainerVersion : コンテナバージョンのID
  • type : タグのタイプ
  • name : タグの名前
  • parameters : タグ固有のパラメータ
  • fireTriggerIds : 発火するトリガー
  • blockTriggerIds : 除外条件のトリガー
  • fireLimit : タグ発火の頻度条件
  • fireDelay : タグ発火の遅延条件
  • priority : タグの優先順位
  • startDate : タグの開始日時
  • endDate : タグの終了日時

参考:管理画面

PHPからの使用例

PHPからの呼び出し例は公式に記載がありますが、今回はfile_get_contents関数ではなくcurlを使ってAPIを呼び出します。
参考:APIなどにfile_get_contents()を使うのはオススメしない理由と代替案 - Qiita

トリガー作成とタグ作成のサンプルを以下に書きます。
xxxxの部分は自分のものに置き換えてください。

トリガー作成

add_trigger_sample.php
<?php
$website_id = xxxx;
$container_id = 'xxxx';
$token_auth = 'xxxx';
$base_url = 'http://xxxx/?module=API';

$url = $base_url
    . '&method=TagManager.addContainerTrigger'
    . '&format=json'
    . '&idSite=' . $website_id
    . '&idContainer=' . $container_id
    . '&idContainerVersion=1' //Draft Version
    . '&type=PageView'
    . '&name=api-test3'
    . '&parameters='
    . '&conditions='
    . '&token_auth=' . $token_auth;

$curl = curl_init();
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
);
curl_setopt_array($curl, $options);
$response = curl_exec($curl);
$result = json_decode($response, true);

if ($response === FALSE) {
    die(curl_error($curl));
}
curl_close($curl);

タグ作成

add_tag_sample.php
<?php
$website_id = xxxx;
$container_id = 'xxxx';
$token_auth = 'xxxx';
$base_url = 'http://xxxx/?module=API';

$url = $base_url
    . '&method=TagManager.addContainerTag'
    . '&format=json'
    . '&idSite=' . $website_id
    . '&idContainer=' . $container_id
    . '&idContainerVersion=' . $draft_container_version_id
    . '&type=CustomHtml'
    . '&name=api-test3'
    . '&parameters[customHtml]=<div></div>'
    . '&parameters[htmlPosition]=bodyEnd'
    . '&fireTriggerIds[0]=1' // $trigger['value']
    . 'block_trigger_ids='
    . 'fire_limit=unlimited'
    . 'priority=' . 999
    . 'fire_delay=' . 0
    . 'start_date=' . null
    . 'end_date=' . null
    . '&token_auth=' . $token_auth;

$curl = curl_init();
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
);
curl_setopt_array($curl, $options);
$response = curl_exec($curl);
$result = json_decode($response, true);

if ($response === FALSE) {
    die(curl_error($curl));
}
curl_close($curl);

URLが違うだけなので、何度も呼び出す場合はcurl部分をメソッドに切り出すと良いと思います。

ブラウザからの使用例

Web APIなのでもちろんブラウザからも確認できます。
実装する際にはブラウザからレスポンスを確認しつつ開発するのが良いと思います。

URLでGETリクエストします。
xxxxの部分は自分のものに置き換えてください。

トリガー作成

http://xxxx/?module=API&method=TagManager.addContainerTrigger&format=json&idSite=xxxx&idContainer=xxxx&idContainerVersion=1&type=PageView&name=api-test&parameters=&conditions=&token_auth=xxxx

タグ作成

http://xxxx/?module=API&method=TagManager.addContainerTag&format=json&idSite=xxxx&idContainer=xxxx&idContainerVersion=1&type=CustomHtml&name=api-test&parameters[customHtml]=<div></div>&parameters[htmlPosition]=bodyEnd&fireTriggerIds[0]=1&block_trigger_ids=&fire_limit=unlimited&priority=999&fire_delay=0&start_date=&end_date=&token_auth=xxxx

以上です!