Referral Tracking
APIエンドポイント
サーバーサイドの紹介トラッキングエンドポイント
紹介APIエンドポイント
サーバーサイドの紹介トラッキングを好む場合(またはバックエンドのみの統合に必要な場合)、JavaScriptトラッキングスクリプトを使用する代わりにこれらのエンドポイントを直接呼び出すことができます。
すべての紹介エンドポイントはCORSをサポートしており、APIキー認証は不要です。
紹介キャンペーンとアフィリエイトキャンペーンの違い: 紹介キャンペーンはサインアップと購入時にポイントを付与します。アフィリエイトキャンペーンは、独自の支払い構造を用いて紹介された購入に対してドルのコミッションを付与します — 販売の割合か販売ごとの固定額のいずれか(両方ではありません)。サインアップトラッキングはアフィリエイトキャンペーンではコミッションを支払いません(購入のみ)。購入のレスポンスには紹介モード用のpointsAwardedとアフィリエイトモード用のcommissionAwardedが含まれます。
紹介コードの検証
/api/referral/validate-code紹介コードが有効かどうかを確認し、紹介者に関する情報を取得します。
クエリパラメータ
codestring required 検証する紹介コード
contestIdstring required コンテスト識別子
リクエスト
curl -X GET "https://blitzrocket.com/api/referral/validate-code?code=REF-XYZ789&contestId=clx1abc123"
レスポンス
{
"valid": true,
"referrerEmail": "jane@example.com",
"referrerName": "Jane Doe",
"contestId": "clx1abc123"
}
訪問のトラッキング
/api/referral/track-visit誰かが紹介リンクを通じてあなたのサイトを訪問したことを記録します。
リクエストボディ
referralCodestring required URLからの紹介コード
contestIdstring required コンテスト識別子
urlstring訪問したページのURL(任意)
リクエスト
curl -X POST https://blitzrocket.com/api/referral/track-visit \
-H "Content-Type: application/json" \
-d '{
"referralCode": "REF-XYZ789",
"contestId": "clx1abc123",
"url": "https://yoursite.com/landing-page"
}'
レスポンス
{
"success": true
}
サインアップのトラッキング
/api/referral/track-signup紹介された訪問者がサインアップしたことを記録します。
リクエストボディ
emailstring required 新規サインアップのメールアドレス
contestIdstring required コンテスト識別子
referralCodestring紹介者の紹介コード(直接サインアップの場合は任意)
externalSiteUrlstring required サインアップが行われたページのURL
namestring新規サインアップ者の名前(任意)
リクエスト
curl -X POST https://blitzrocket.com/api/referral/track-signup \
-H "Content-Type: application/json" \
-d '{
"email": "newuser@example.com",
"campaignId": "clx1abc123",
"referralCode": "REF-XYZ789",
"externalSiteUrl": "https://yoursite.com/signup"
}'
レスポンス
{
"success": true,
"data": {
"entryId": "entry_new789",
"isReferred": true,
"pointsAwarded": {
"advocate": 10,
"friend": 5
}
}
}
購入の追跡
/api/referral/track-purchase紹介されたユーザーが購入を行ったことを記録します。blitzrocket.js の RocketTracker.trackPurchase() で使用されます。
リクエストボディ
campaignIdstring required コンテスト識別子(contestId と同じ)
referralCodestring required 紹介者のリファラルコード
orderIdstring required 一意の注文識別子
amountnumber required 購入金額
externalSiteUrlstring required 購入が行われたページのURL
emailstring購入者のメールアドレス(任意)
phonestring購入者の電話番号(任意)
currencystring通貨コード(デフォルト: 'USD')
リクエスト
curl -X POST https://blitzrocket.com/api/referral/track-purchase \
-H "Content-Type: application/json" \
-d '{
"campaignId": "clx1abc123",
"referralCode": "REF-XYZ789",
"orderId": "order-12345",
"amount": 99.99,
"currency": "USD",
"externalSiteUrl": "https://yoursite.com/checkout/success",
"email": "buyer@example.com"
}'
レスポンス
リファラルキャンペーン(ポイント):
{
"success": true,
"message": "Purchase tracked successfully",
"referrerEntryId": "entry_abc123",
"pointsAwarded": { "advocate": 50, "friend": 10 },
"commissionAwarded": { "advocate": 0 }
}
アフィリエイトキャンペーン(ドルコミッション):
{
"success": true,
"message": "Purchase tracked successfully",
"referrerEntryId": "entry_abc123",
"pointsAwarded": { "advocate": 0, "friend": 0 },
"commissionAwarded": { "advocate": 24.99 }
}
メールのみでの購入追跡(リクエストにリファラルコードがない場合)は、代わりに POST /api/contest/track-purchase を使用してください。
完全なサーバーサイドの例
サーバー上でリファラルトラッキングを実装する完全な例を示します。
const express = require("express");
const app = express();
const BLITZROCKET_BASE = "https://blitzrocket.com/api/referral";
const CONTEST_ID = process.env.CONTEST_ID;
app.post("/api/signup", async (req, res) => {
const { email, name, referralCode } = req.body;
// 1. システム内でユーザーを作成する
const user = await createUser({ email, name });
// 2. Blitz Rocketで紹介によるサインアップをトラッキングする
if (referralCode) {
await fetch(`${BLITZROCKET_BASE}/track-signup`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
email,
name,
contestId: CONTEST_ID,
referralCode,
}),
});
}
res.json({ success: true, user });
});
app.post("/api/purchase", async (req, res) => {
const { email, orderId, amount, currency } = req.body;
// 1. システム内で購入処理を行う
const order = await processOrder({ email, orderId, amount });
// 2. Blitz Rocketで購入をトラッキングする
await fetch(`${BLITZROCKET_BASE}/track-purchase`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
email,
contestId: CONTEST_ID,
orderId,
amount,
currency,
}),
});
res.json({ success: true, order });
});