コンバージョン・トラッキング. Attribute every dollar to the click that earned it.
StripeおよびShopifyのWebhookレシーバーが署名を検証し、収益をもとの短縮リンクに紐付けます。キャンペーンのアトリビューション(帰属)は自動的に算出されます。
- Server-side Stripe & Shopify attribution
- click_id passthrough — no client JS needed
- Revenue by link, campaign, day, platform
- Automatic HMAC signature verification
How it works
The click_id travels the entire funnel
A UUID is stamped at click time and passed through every step — URL parameter, session cookie, Stripe session, Shopify order — until the webhook fires and closes the attribution loop server-side. No client JavaScript is required for the attribution itself.
- Step 01
Click short link
elido.me/saleEdge stamps UUID v4
cid: a3f9c1… - Step 02
click_id attached
?elido_cid=a3f9c1…URL param + first-party cookie
cid: a3f9c1… - Step 03
User converts
client_reference_id=a3f9c1…Stripe session carries click_id
cid: a3f9c1… - Step 04
Webhook fires
checkout.session.completedRevenue attributed to originating link
cid: a3f9c1…
Integrations
Drop-in webhook receivers for Stripe and Shopify
Register the endpoint in your dashboard, paste the signing secret, and attribution starts flowing. HMAC signature verification happens before any payload is processed — spoofed webhooks are rejected before they touch your data.
Revenue dashboard
Revenue per link, per campaign, per day
Every short link gets a live revenue total — sum of all attributable conversion values through that link. Filter by campaign tag, date range, or platform. Export as CSV or stream to BigQuery via scheduled exports.
- Revenue per linkSummed conversion values, any currency, in the original denomination
- CVR over timeConversion rate time-series alongside click volume
- Forwarding to GA4 / Meta CAPIFanned out asynchronously after conversion is recorded
- DeduplicationIdempotent on click_id + event_name — double webhooks don't double-count
| Link | Clicks | Conv. | Revenue | 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% |
What you can do
- 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用のコピー&ペースト可能なコードがあります。
コンバージョンデータは ClickHouse のエクスポートに含まれますか?
はい。コンバージョンイベントは、クリックイベントテーブル (clicks) と並んで、別の ClickHouse テーブル (conversions) に保存されます。S3、BigQuery、Snowflakeへの定期エクスポートには両方のテーブルが含まれます。結合(JOIN)キーは click_id です。クリックとコンバージョンを結合し、キャンペーンの UTM source ごとに収益を計算する参照用SQLクエリは、エクスポートガイドに掲載されています。
フォーム入力やトライアル有効化など、収益以外のコンバージョンも追跡できますか?
はい。カスタムコンバージョンエンドポイントは、任意の event_name とオプションの value(収益以外のイベントは0に設定)を受け取ります。'trial_started'、'demo_booked'、'form_submitted' などのイベント名を使用してください。これらはリンクのアナリティクス画面の「Conversions」セクションに、イベント名をラベルとして表示されます。GA4 にも転送する場合、これらはカスタム GA4 イベントにマッピングされます。収益だけでなくコンバージョン数も、イベントの値に関係なくリンクごとおよびキャンペーンごとに確認できます。
コンバージョンイベントを受信してからアナリティクスに反映されるまでの遅延はどのくらいですか?
Webhook受信から ClickHouse への反映:クリックイベントと同じ Redpanda パイプラインを経由し、通常5秒以内です。アトリビューション(コンバージョンと元のクリックの照合)はWebhook受信時に同期的に行われます。click_id が解決されれば、アトリビューションは即座に行われます。GA4 / Meta CAPI / Mixpanel へのダウンストリーム転送は非同期で行われ、2〜10秒追加されます。ダッシュボードのアナリティクス画面の収益額は、コンバージョンイベント受信から30秒以内に更新されます。