
「GTMでタグの配信順序を設定する方法を教えて下さい!」
という質問をいただきました。
わかりそうでわからない、いまさら聞けない…ちょっとしたことをコラム化してみました。
そもそもどんなときに必要?
広告タグを設定する際に、
「ベースコードのタグを配信後に、イベントコードのタグを配信してください」
という指定があったとします。
このような場合は、配信順序を制御する必要があります。もし、配信順序を設定しないと、最初に実行するベースコードタグで行われる処理(変数の設定など)が次に実行されるイベントコードタグで必要であるのにもかかわらず利用できなくなり、せっかく設定したのに正しく値が送信できていない!なんてことになりますので、正しく配信を制御しましょう。
配信順序の種類
配信順序の設定は、いくつか方法があります。
- タグ配信の優先度
- タグの順序付け
- dataLayerでイベントを作成し配信の順序を制御する(カスタムHTMLのみ設定可能)
早速、順に説明していきます。
タグ配信の優先度
この機能は、タグを配信する順番を決めることができます。
[詳細設定] > [タグ配信の優先度]
ここに数値を入れてタグを配信する順番を決めます。
早く配信させたい場合(10など)
遅く配信させたい場合(-10など)
何も入れていない状態は0として扱われます。

注意
・タグは非同期に配信されます。
「配信開始」を指定する機能であり、「配信完了」を待つ機能ではありません。
例えば、初めに説明した「ベースコードのタグを配信後にイベントコードのタグを配信する」場合
ベースコードタグが処理中にもかかわらず、イベントコードタグの処理が始まってしまうということがおこり得ますので、この機能は、タグの処理完了が必要ではない場面で使用してください。
さらに詳しい解説については、弊社畑岡のコラム記事をご覧ください。
「Googleタグマネージャで、タグ配信の優先度(配信の順番)が設定できるように」
・GA4については、同じトリガー設定を行えば勝手に「Googleタグ→GA4イベントタグ」の順番で発火してくれるため、原則設定不要は不要です。
タグの順序付け
この機能は、特定のタグの直前または直後に配信するタグを指定することができます。
「タグ配信の優先度」ではできなかった「配信完了」を待ってから配信ということが可能です。
タグの順序づけは、下記を制御することができます。
[現在設定中のタグ]が発効する前に設定タグを配信
[現在設定中のタグ]が発効した後に設定タグを配信
[詳細設定] > [タグの順序付け]
チェックボックスをオンにし、[設定タグ]あるいは[クリーンアップ タグ]に配信したいタグを選択してください。

注意
・GA4については、タグ配信の優先度同様、同じトリガー設定を行えば勝手に「Googleタグ→GA4イベントタグ」の順番で発火してくれるため、原則設定不要です。
・タグの順序付けオプションを利用した場合、GTMに設定したタグの動作完了は待ってくれるのですが、そのタグが呼び出した別の処理の終了までは待ってくれないケースがあります、動作確認をきちんと行う必要があります。
・タグの順序付けオプションを利用した場合であっても、下記の画像のように、後続イベントまでタグ処理完了が担保されません。例えば、「同意の初期化」トリガーで「タグの順序付け」を行っているAタグ→Bタグを設定した場合、「初期化」や「コンテナの読み込み」など、Aタグ→Bタグの完了を待たずに実行されます。

dataLayerでイベントを作成し配信の順序を制御する(カスタムHTMLのみ設定可能)
これは、dataLayer.pushでイベントを作成し、トリガーによってタグの配信順序を設定します。
こちらはカスタムHTMLの場合のみ設定ができます。
設定の流れ
「ベースコードのタグを配信後にイベントコードのタグを配信する」場合
- カスタムHTMLでベースコードタグ記述の後に、dataLayer.pushスクリプトを記述し独自イベントを作成します。
- 独自で作成したイベントで配信するトリガーを作成します。
- 作成したトリガーをイベントコードタグに紐づけます。
少し難しいので実際にやってみましょう。
ベースコードタグの記述の下にdataLayer.pushスクリプトを記述し独自イベントを作成します。
Javascriptは上から下に実行されますので必ずベースコードタグの後に追加しましょう。

独自で作成したイベントで配信するトリガーを作成します。
[トリガー] > [新規] > [カスタムイベント] を選択

任意のトリガー名「TEST-Event」と独自で作成したイベント名「TEST」を設定します。

最後にイベントコードタグに今作成した「TEST」トリガーを紐づけます。
これにより、ベースコードタグ配信後にイベントコードが配信されることになります。

まとめ
3つの配信順序をご紹介しましたが、ほとんどの方が「タグの順序付け」を利用しているのではないでしょうか。
なぜなら「タグ配信の優先度」は非同期に配信されるため利用する場面がなかなかないというのが現状です。
また、「dataLayerでイベントを作成し配信の順序を制御する」についても、カスタムHTMLにJavascriptを追加する必要があり難易度が高い、設定してしばらくの後、どのようにタグを設定したかなど、いちいちコードをチェックしなくてはならないなど、管理がしずらいなどの理由からです。
GTMでプレビューするとタグは正しく配信しているのに、データが正しく計測されない!そんな時はタグの配信順序をしていない、順序が誤っている可能性も疑ってみてください。本コラムをお読みただき、皆さまの手助けになれば幸いです。