コンバージョン・トラッキング. 売上を生んだクリックへ、すべての1ドルを帰属させます。
StripeおよびShopifyのWebhookレシーバーが署名を検証し、収益をもとの短縮リンクに紐付けます。キャンペーンのアトリビューション(帰属)は自動的に算出されます。
- サーバーサイドのStripe・Shopifyアトリビューション
- click_idのパススルー - クライアントJSは不要です
- リンク、キャンペーン、日、プラットフォーム別の売上
- HMAC署名の自動検証
仕組み
click_idがファネル全体を貫通します
クリック時にUUIDが付与され、URLパラメータ、セッションCookie、Stripeセッション、Shopify注文と各ステップを渡り歩きます。Webhookが発火すると、サーバーサイドでアトリビューション・ループが閉じます。アトリビューション自体にクライアント側JavaScriptは必要ありません。
- ステップ 01
短縮リンクをクリック
elido.me/saleエッジがUUID v4を付与します
cid: a3f9c1… - ステップ 02
click_idが付与されます
?elido_cid=a3f9c1…URLパラメータ + ファーストパーティCookie
cid: a3f9c1… - ステップ 03
ユーザーがコンバージョン
client_reference_id=a3f9c1…Stripeセッションがclick_idを保持します
cid: a3f9c1… - ステップ 04
Webhookが発火します
checkout.session.completed売上が起点リンクへ帰属されます
cid: a3f9c1…
インテグレーション
StripeとShopify向けのドロップイン・Webhook受信機
ダッシュボードでエンドポイントを登録し、署名シークレットを貼り付ければ、アトリビューションが流れ始めます。HMAC署名の検証はペイロードが処理される前に行われるため、偽装Webhookはデータに触れる前に拒否されます。
売上ダッシュボード
リンク別・キャンペーン別・日別の売上
短縮リンクごとに、リアルタイムの売上合計を表示します - そのリンクを通じて帰属可能な全コンバージョン額の合計です。キャンペーンタグ、日付範囲、プラットフォームで絞り込めます。CSV出力、または定期エクスポートでBigQueryへストリーム送信できます。
- リンク別売上合算されたコンバージョン額。任意通貨、元の単位のまま
- CVRの推移コンバージョン率の時系列をクリック数と並べて表示します
- GA4 / Meta CAPI への転送コンバージョン記録後に非同期にファンアウト送信します
- 重複排除click_id + event_nameに対して冪等。二重Webhookでも二重カウントしません
| リンク | クリック | コンv | 売上 | CVR |
|---|---|---|---|---|
| elido.me/bfcm | 18,420 | 847 | €76,280 | 4.6% |
| elido.me/sale | 11,034 | 512 | €41,430 | 4.6% |
| elido.me/nl/shop | 8,901 | 398 | €29,104 | 4.5% |
| elido.me/email-q2 | 6,201 | 201 | €14,872 | 3.2% |
| elido.me/ig-bio | 5,032 | 88 | €6,104 | 1.7% |
できること
- Stripe checkout.session.completed
- Stripe payment_intent.succeeded
- Shopify orders/paid
- リンクから派生するキャンペーン・アトリビューション
- ダッシュボードでの収益サマリー
エンドツーエンドのサーバーサイド・コンバージョン・アトリビューションの仕組み
クライアントサイドのピクセルは、広告ブロッカー、iOSのプライバシー制限、チェックアウトのリダイレクトチェーンなどにより、コンバージョンの20〜40%を捕捉できません。サーバーサイドのアトリビューションがこのギャップを埋めます。
すべてのクリックにUUIDが付与され、転送先に渡されます。これがコンバージョン照合のアトリビューション・アンカーとなります。
ユーザーがElidoの短縮リンクをクリックすると、エッジでクリックID(UUID v4)が生成され、クエリパラメータ(elido_cid)として遷移先URLに追加されます。チェックアウトフローでは、ファネル内のすべてのページでこのパラメータを保持する必要があります。ほとんどのSPAルーターやサーバーレンダリングのチェックアウトスタックは、デフォルトで不明なクエリパラメータを転送しますが、リダイレクトチェーンを含むマルチステップのチェックアウトでは削除される場合があります。クリックIDは、オプションの2KBアトリビューション・スニペットを遷移先ドメインに埋め込んでいる場合、セッションCookieにも保存されます。本番公開前に、短縮リンクをクリックし、テスト購入を完了させ、コンバージョンのPOSTにelido_cidが含まれていることを確認するテストを必ず行ってください。含まれていない場合は、チェックアウトミドルウェアにクエリパラメータの転送設定を追加してください。これはWebhookの不具合ではなく、チェックアウト時のクエリパラメータ消失による最も一般的な設定ミスです。
Stripe Webhookレシーバーが署名を検証し、checkout.session.completed および payment_intent.succeeded イベントをアトリビュートします。
Stripeダッシュボード(設定 → Webhook → エンドポイントを追加)にElidoのStripe Webhookエンドポイントを登録してください。Elidoは checkout.session.completed および payment_intent.succeeded イベントをリッスンします。各イベントに対し、ElidoはWebhook署名シークレットを使用して Stripe-Signature ヘッダーを検証し、支払い金額と通貨を抽出。チェックアウトセッションの client_reference_id(チェックアウト時に設定が必要。詳細はガイドを参照)に保存されたクリックIDを照会し、そのクリックに対してコンバージョンを記録します。収益とクリックIDは、リンクのアナリティクス画面およびキャンペーン収益サマリーで確認できます。チェックアウトセッションの client_reference_id フィールドの使用を推奨しますが、PaymentIntents を直接使用している場合は、キー elido_cid を持つ Stripe の metadata フィールドを使用することも可能です。Stripe連携で既にWebhookを処理している場合、設定は約30分で完了します。
Shopifyの orders/paid Webhookにより、注文収益をもとの短縮リンククリックに紐付けます。
Shopify管理画面(設定 → 通知 → Webhook → Webhookを作成 → トピック: orders/paid)にElidoのShopify Webhookエンドポイントを登録してください。Elidoは X-Shopify-Hmac-Sha256 ヘッダーを検証し、注文合計額と通貨を抽出。注文の note_attributes から elido_cid を照会します(Shopify のカート note_attributes API を使用して、セッションCookieまたはURLパラメータから取得したクリックIDをカートから渡すように設定してください)。Online Store 2.0 テーマを使用しているShopifyストアの場合、Elidoのアトリビューション・スニペットがクリック時にクリックIDを自動的にカートに挿入します。アトリビュートされた注文は注文IDで重複排除されるため、返金・再注文による二重計上は発生しません。Shopify Plus を利用していてカスタムチェックアウト拡張機能を使用しているストアでは、より信頼性の高いチャネルを通じてクリックIDを渡すことができます。詳細はPlus専用のセットアップガイドを参照してください。
StripeやShopifyだけでなく、あらゆるバックエンドからElidoのコンバージョンエンドポイントにPOSTできます。
JSONボディ { click_id: "...", event_name: "purchase", value: 99.00, currency: "EUR", metadata: {} } を含めて POST /v1/conversions を実行してください。click_id はクリック時の elido_cid です。ElidoはワークスペースAPIキーを使用してリクエストを認証します(セキュリティ向上のため、ペイロードボディに対する HMAC-SHA256 を推奨)。このエンドポイントは、ネイティブの Stripe や Shopify 連携では対応できない、WooCommerce、カスタムSaaSのトライアル有効化、リードフォームの送信、電話システムで追跡される電話コンバージョンなど、あらゆるコンバージョンをカバーします。event_name フィールドは自由入力で、チームの命名規則に従って設定でき、アナリティクス画面にそのまま表示されます。冪等性:同じ click_id と event_name の組み合わせを2回POSTしても、最初の1回のみが記録されます。イベントの値とメタデータは、最初の書き込み時のみ変更可能です。
コンバージョンを GA4 Measurement Protocol、Meta CAPI、Mixpanel サーバー追跡に同時にファンアウトします。
Elidoがクリックに対してコンバージョンを記録した後、有効化されているサーバーサイド転送先のいずれかにイベントをファンアウトします。GA4 Measurement Protocol(イベントはクリック時の元のUTMパラメータを持つサーバーサイド購入イベントとしてGA4に表示されます)、Meta Conversions API(クリックIDの event_id を使用して、両方が実行されている場合はクライアントサイドピクセルと重複排除されます)、Mixpanel サーバー追跡(クロスアイデンティティを構成している場合、Mixpanel の $identify 呼び出しの distinct_id と共にイベントが送信されます)。転送はコンバージョン記録後に非同期で行われるため、Stripe や Shopify へのWebhookレスポンスをブロックしません。失敗した転送イベントは、指数バックオフを伴い24時間リトライされ、その後ログエントリと共に破棄されます。転送ステータスは、ダッシュボードでコンバージョンごとに確認できます。
Elidoのコンバージョン・トラッキングを利用している収益チーム
名前はプレースホルダーです。実際の事例が公開され次第、こちらに掲載されます。
“iOS 14.5により、モバイル購入の30%でMetaピクセルのアトリビューションが失われました。Elidoを通じたサーバーサイドのStripe Webhookにより、その大部分を回復できました。Stripeの client_reference_id への click_id パススルーが決め手でした。セットアップは半日で終わりました。”
“トライアルの有効化をElidoのカスタムコンバージョンエンドポイントにPOSTしています。クリック → トライアル → 有料化のチェーンが、フル機能のCDPなしでエンドツーエンドで追跡可能になりました。GA4 Measurement Protocol 転送のおかげで、有料チャネルのダッシュボードが再び正確になりました。”
“Shopifyの orders/paid Webhookとテーマへのアトリビューション・スニペットの導入は、1日で完了しました。キャンペーンごとの収益が、誰かが更新しなければならないスプレッドシートの数式ではなく、毎朝のスタンドアップで見られるライブな数字になりました。”
Elido コンバージョン・トラッキング vs Bitly vs Short.io
Bitlyにはサーバーサイドのコンバージョン・トラッキングがありません。Short.ioには基本的なコンバージョンピクセルがあります。Elidoのコンバージョン・トラッキングはサーバーサイドで、複数の広告プラットフォームに転送可能です。
| Feature | Elido | Bitly | Short.io |
|---|---|---|---|
| サーバーサイド・コンバージョン・アトリビューション | 対応 - Webhookベース、署名検証済み | 利用不可 | 利用不可 |
| Stripe Webhook連携 | checkout.session.completed + payment_intent.succeeded | 利用不可 | 利用不可 |
| Shopify Webhook連携 | orders/paid - 署名検証、注文の重複排除 | 利用不可 | 利用不可 |
| カスタムコンバージョンエンドポイント | POST /v1/conversions - あらゆるバックエンド、あらゆるイベント | 利用不可 | 利用不可 |
| GA4 / Meta CAPI 転送 | 対応 - コンバージョン記録後にファンアウト | 利用不可 | 一部対応 - クライアントサイドピクセルのみ |
| アナリティクスでの収益表示 | リンクおよびキャンペーンごとの通貨別収益サマリー | 利用不可 | コンバージョン数のみ、収益なし |
| コンバージョンの重複排除 | 対応 - click_id + event_name による冪等性 | 該当なし | 利用不可 |
コンバージョン・トラッキングに関する質問
コンバージョン前に click_id が削除された場合はどうなりますか?
リダイレクトチェーン、クエリパラメータを転送しないSPAルーター、または不明なパラメータを削除するサードパーティのチェックアウトなどが原因で、コンバージョンイベントが発生する前に elido_cid クエリパラメータが失われた場合、コンバージョンをアトリビュートすることはできません。ファネル全体をテストしてください:短縮リンクをクリックし、すべてのページで elido_cid が保持されていることを追跡し、チェックアウト完了後のコンバージョンPOSTに含まれていることを確認してください。Elidoのアトリビューション・スニペット(小さなJavaScriptブロック)は、フォールバックとしてファーストパーティCookieにクリックIDを保存します。URLパラメータが失われても、ユーザーが同じブラウザセッション内にいれば、Cookieからアトリビューションを復旧できる可能性があります。
コンバージョン・アトリビューションで返金はどのように処理されますか?
Elidoは返金イベントを自動的には処理しません。Stripeの charge.refunded や Shopify の refunds/create イベントが発生しても、Elidoはアトリビュートされた収益を差し引きません。アトリビューションを手動で取り消すには、カスタムエンドポイントに負の値のコンバージョンイベントをPOSTしてください。返金Webhookリスナーはロードマップに含まれています。それまでの間、Elidoで正確な純収益を確認する必要がある場合は、エクスポートデータと注文管理システムを使用して返金額を差し引いてください。
ユーザーが別のデバイスでチェックアウトを完了した場合、コンバージョン・トラッキングは機能しますか?
いいえ。ユーザーがモバイルで短縮リンクをクリックし、デスクトップでチェックアウトを完了した場合、デバイス間でクリックIDは引き継がれません。ユーザーのセッションがデバイスをまたいで elido_cid を保持(ログインアカウントに保存されるなど)していない限り、コンバージョンは未計測となります。クロスデバイスのアトリビューションには、Elidoが提供していないサーバーサイドのアイデンティティグラフが必要です。クロスデバイスのアトリビューションの精度を高めるには、Elidoのサーバーサイドコンバージョンと併せてMMPまたはCDPを使用してください。
収益アトリビューションでサポートされている通貨は何ですか?
コンバージョンイベントの value フィールドでは、すべての ISO 4217 通貨コードを使用できます。収益は元の通貨で保存されます。アナリティクスダッシュボードには、各コンバージョンイベントの通貨で収益が表示されます。単一の通貨で集計したビューが必要な場合は、コンバージョンイベントをエクスポートしてウェアハウスで換算してください。Elidoは為替レートの適用を行いません。
Stripe の client_reference_id パススルーはどのように設定しますか?
Stripe チェックアウトセッションを作成する際、参照元のクリックから取得した elido_cid URLパラメータの値を client_reference_id に設定してください。JavaScriptの場合: const session = await stripe.checkout.sessions.create({ ..., client_reference_id: searchParams.get('elido_cid') }); ElidoのWebhookハンドラーは、checkout.session.completed からこのフィールドを読み取ります。PaymentIntents を直接使用している場合は、代わりにキー elido_cid を持つ metadata フィールドを使用してください。/docs/guides/conversion-tracking のセットアップガイドに、Node, Python, Go用のコピー&ペースト可能なコードがあります。
コンバージョンデータは分析エクスポートに含まれますか?
はい。コンバージョンイベントは、クリックイベントテーブル (clicks) と並んで、別のテーブル (conversions) に保存されます。S3、BigQuery、Snowflakeへの定期エクスポートには両方のテーブルが含まれます。結合(JOIN)キーは click_id です。クリックとコンバージョンを結合し、キャンペーンの UTM source ごとに収益を計算する参照用SQLクエリは、エクスポートガイドに掲載されています。
フォーム入力やトライアル有効化など、収益以外のコンバージョンも追跡できますか?
はい。カスタムコンバージョンエンドポイントは、任意の event_name とオプションの value(収益以外のイベントは0に設定)を受け取ります。'trial_started'、'demo_booked'、'form_submitted' などのイベント名を使用してください。これらはリンクのアナリティクス画面の「Conversions」セクションに、イベント名をラベルとして表示されます。GA4 にも転送する場合、これらはカスタム GA4 イベントにマッピングされます。収益だけでなくコンバージョン数も、イベントの値に関係なくリンクごとおよびキャンペーンごとに確認できます。
コンバージョンイベントを受信してからアナリティクスに反映されるまでの遅延はどのくらいですか?
Webhook受信から分析ストアへの反映:クリックイベントと同じイベントストリームのパイプラインを経由し、通常5秒以内です。アトリビューション(コンバージョンと元のクリックの照合)はWebhook受信時に同期的に行われます。click_id が解決されれば、アトリビューションは即座に行われます。GA4 / Meta CAPI / Mixpanel へのダウンストリーム転送は非同期で行われ、2〜10秒追加されます。ダッシュボードのアナリティクス画面の収益額は、コンバージョンイベント受信から30秒以内に更新されます。