計測タグ (tracker.js) の導入
外部の LP に <script> タグを 1 行貼り、計測したいボタンで trackEvent() を呼ぶだけで計測を始められる。 まず「まとめて貼る」を試し、必要に応じて個別の手順を読む。
まとめて貼る
LINE・電話・フォームの 3 パターンを含む完全な HTML。YOUR_SITE_ID を LP 管理 で取得した siteId に置き換えれば動く。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>サンプルLP</title>
<!-- ① 計測タグ: site_id をご自身のサイトIDに書き換えてください -->
<script
src="https://lp-dashboard.maxelustech.com/tracker.js"
data-site-id="YOUR_SITE_ID"
></script>
</head>
<body>
<h1>キャンペーンLP</h1>
<p>無料相談はこちらから</p>
<!-- ② LINE 相談ボタン -->
<a
href="https://line.me/R/ti/p/@your-account"
target="_blank"
rel="noopener"
onclick="trackEvent('lp_line_click')"
>LINEで無料相談する</a>
<!-- ③ 電話タップ -->
<a
href="tel:0120-000-000"
onclick="trackEvent('lp_tel_click')"
>0120-000-000</a>
<!-- ④ フォーム送信 -->
<form onsubmit="trackEvent('lp_form_submit')">
<input name="name" placeholder="お名前" required />
<input name="email" type="email" placeholder="メール" required />
<button type="submit">送信</button>
</form>
</body>
</html>貼り付け後に 3 つのボタンを押すと、アクションログ に lp_line_click / lp_tel_click / lp_form_submit が 3 件流れる。
script タグを head に 1 行追加する
data-site-id には LP 管理 で確認した siteId を入れる。
<script src="https://lp-dashboard.maxelustech.com/tracker.js" data-site-id="YOUR_SITE_ID"></script>
<head> に置くと tracker.js のロードが最も早くなる。公開キーを足して v1 API を使う(推奨)
data-public-key があると、tracker.js は送信先を /api/v1/track に切り替える。SPA のページ遷移、流入元の正規化 (first-touch / last-touch)、セッション、イベントの重複排除が有効になる。
<script src="https://lp-dashboard.maxelustech.com/tracker.js" data-site-id="YOUR_SITE_ID" data-public-key="YOUR_PUBLIC_KEY" ></script>
<script src="https://lp-dashboard.maxelustech.com/tracker.js"></script> <script> window.LP_TRACKING_SITE_ID = "YOUR_SITE_ID"; window.LP_ANALYTICS_PUBLIC_KEY = "YOUR_PUBLIC_KEY"; </script>
YOUR_PUBLIC_KEY は API 連携画面で公開キー (lpa_site_pub_…) を発行して差し替える。平文は発行直後の 1 回しか表示されない (サーバーにはハッシュのみ保存)。
公開キーが無いタグは従来どおり /api/track に旧形式で送信される。 貼り替えなくても計測は止まらない。
v1 は未登録のイベントキーを受け付けない (400)。送信するキーは先に成果の設定へ登録する。 ページビューのイベント名は page_view (旧ルートは pageview)。
サイトに Origin 許可リストを設定している場合、リストに無いドメインからの送信は 403 になる。
計測したいボタンに onclick を追加する
siteId は script タグの data-site-id から自動補完される。 引数は eventKey だけでよい。
<button onclick="trackEvent('lp_line_click')">
LINEで相談
</button><a href="tel:0120-000-000" onclick="trackEvent('lp_tel_click')">
電話で問い合わせる
</a><form onsubmit="trackEvent('lp_form_submit')">
<input name="email" required />
<button type="submit">送信</button>
</form>eventKey の命名
ダッシュボードの「アクション別成果」に集計させる場合は、LP 管理 → 成果の設定 でも同じ key を登録する。
| event_key | 用途 |
|---|---|
| lp_line_click | LINE 公式アカウント追加ボタン |
| lp_tel_click | 電話番号タップ |
| lp_form_submit | フォーム送信完了 |
| lp_cta_click | メイン CTA (汎用) |
| lp_scroll_50 | 50% スクロール到達 (任意の JS で発火) |
| pageview | ページ表示 (任意で onload 発火) |
問い合わせフォームを DB に保存する
フォーム送信内容を /api/inquiries に POST すると inquiries テーブルへ保存され、問い合わせ管理 で受信を確認できる。 送信成功時は lp_form_submit イベントもサーバー側で自動記録される。
<form id="contact-form">
<input name="name" placeholder="お名前" required />
<input name="email" type="email" placeholder="メール" required />
<input name="phone" placeholder="電話番号 (任意)" />
<textarea name="message" placeholder="お問い合わせ内容" required></textarea>
<button type="submit">送信</button>
</form>
<div id="contact-result" hidden></div>
<script>
document.getElementById("contact-form").addEventListener("submit", async function (e) {
e.preventDefault();
var form = e.currentTarget;
var fd = new FormData(form);
var btn = form.querySelector("button[type=submit]");
var result = document.getElementById("contact-result");
btn.disabled = true;
result.hidden = true;
try {
var res = await fetch("https://lp-dashboard.maxelustech.com/api/inquiries", {
method: "POST",
mode: "cors",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
siteId: window.LP_TRACKING_SITE_ID, // tracker.js の data-site-id から自動取得
name: fd.get("name"),
email: fd.get("email"),
phone: fd.get("phone") || undefined,
message: fd.get("message"),
}),
});
var data = await res.json();
if (res.ok && data.ok) {
result.textContent = "送信ありがとうございました。担当より追ってご連絡します。";
result.style.color = "green";
form.reset();
// 注: /api/inquiries 側で lp_form_submit イベントもサーバ側で自動記録される
} else {
result.textContent = "送信失敗: " + (data.error || res.statusText);
result.style.color = "red";
}
} catch (err) {
result.textContent = "送信失敗: " + err.message;
result.style.color = "red";
} finally {
btn.disabled = false;
result.hidden = false;
}
});
</script>- 必須
- siteId / name / email / message
- 任意
- phone / company
- 制限
- email 形式チェック、name・email ≤ 200 / phone ≤ 50 / message ≤ 5000
- レスポンス
- 成功 { ok: true, id } / 失敗 { ok: false, error }
trackEvent() の呼び出しパターン
下記のいずれの書き方でも動く。
// パターンA: ショートハンド (推奨)
trackEvent("lp_line_click");
// パターンB: オブジェクト指定 (siteIdを上書きしたい時等)
trackEvent({ siteId: "xxx", eventKey: "lp_line_click" });
// パターンC: metadata付き (任意のJSONを events.metadata に保存)
trackEvent({ eventKey: "lp_form_submit", metadata: { plan: "pro" } });テスト LP で導入を検証する
本サービスに同梱の テスト LP は、LINE・電話・ 問い合わせフォームの 3 ボタンを実装済み。外部 LP に貼る前に、 tracker.js と GA4 の両方が動いているかをここで確認できる。
環境変数を設定する
Vercel の Project Settings → Environment Variables に次の 2 つを登録する (ローカルは .env.local)。
NEXT_PUBLIC_DEMO_SITE_ID="<LP管理で作成したsiteのID>" NEXT_PUBLIC_GA4_MEASUREMENT_ID="G-XXXXXXXXXX" # 任意 (GA4計測したい場合)
NEXT_PUBLIC_DEMO_SITE_ID— LP 管理 でデモ用の LP を 1 件作り、その siteId をコピーするNEXT_PUBLIC_GA4_MEASUREMENT_ID— GA4 プロパティの測定 ID (G- で始まる)。未設定でも tracker.js 部分だけは検証できる- Vercel は環境変数の変更後に再デプロイが必要
検証用 URL を開いてボタンを押す
次の URL をブラウザで開き、ページ内の LINE・電話・フォームの 3 ボタンをそれぞれ押す。 ページ最上部の帯で UTM が認識されていることを確認できる。
https://lp-dashboard.maxelustech.com/lp-saas-demo?utm_source=instagram&utm_medium=social&utm_campaign=testhttps://lp-dashboard.maxelustech.com/lp-saas-demo?utm_source=x&utm_medium=social&utm_campaign=testhttps://lp-dashboard.maxelustech.com/lp-saas-demo計測結果を確認する
- アクションログ — 押したボタンの分だけ
lp_line_click/lp_tel_click/lp_form_submitが即時に並べば tracker.js は正常 - 問い合わせ管理 — フォームから送信したテスト内容が一覧に出ればフォーム連携も正常
- ダッシュボード — 流入元ランキングに instagram / x / direct が出る (GA4 側の値のため、次の同期後に反映)
GA4 から analytics_sources_daily への同期は毎日 03:00 JST (Vercel Cron) に実行される。すぐ確認したい場合は LP 管理 の各 LP 詳細から手動同期する (GA4 プロパティ ID の設定が必要)。
tracker.js 側の成果は API 着信後すぐ反映され、同期を待つ必要はない。
うまく動かないとき
リファレンス
- tracker.js
- https://lp-dashboard.maxelustech.com/tracker.js
- 送信先 (公開キーなし)
- POST https://lp-dashboard.maxelustech.com/api/track
- 送信先 (公開キーあり)
- POST https://lp-dashboard.maxelustech.com/api/v1/track
- CORS
- 旧: 任意のドメインから利用可 / v1: サイトの Origin 許可リストに一致した Origin のみ
- 送信ペイロード
- 旧: { siteId, eventKey, metadata? }v1: { siteId, publicKey, eventId, eventName, occurredAt, page, referrer, attribution, properties }
- レスポンス
- 旧: { ok: true } / { ok: false, error }v1: { success: true, data: { eventId, deduplicated }, requestId }
- 集計の確認
- ダッシュボード (要ログイン)