AppLovin Support

注文履歴データ

プロスペクティングキャンペーン(新規顧客の獲得)を最適化するために、AppLovinは注文履歴データをAppLovinに提供することを強く推奨します。 これにより、AppLovinは既存顧客の正確なモデルを構築し、価値の高い新しいユーザーを見つけることができます。

AppLovin Shopifyアプリをインストールし、それをAds Managerアカウントに連携しているShopifyユーザーであれば、すでに準備は完了しています!

それ以外の場合は、以下の要件に従って、このデータをCSV形式でアップロードしてください。

AppLovinへの顧客データの提供は、必要な通知や同意を含む、お客様自身のプライバシーコンプライアンス要件に従うものとします。

ファイルアップロード要件

  • ファイル形式: CSVのみ。
  • ファイルサイズ: 1ファイルあたり最大200 MB。
  • アップロード方法: ファイルを直接アップロードするか、安全な転送方法(SFTPなど)を使用してアップロードできます。
  • 複数ファイル: 複数のファイルをアップロードできます。 新しい各ファイルからのデータは、既存のバックフィルデータに追加されます。
  • 重複排除: AppLovinは transaction_id に基づいて自動的に注文を重複排除します。 AppLovinは、システム内にすでに存在する transaction_id を持つデータ行を無視します。 単一のファイル内に重複する transaction_id を持つ行が存在する場合、AppLovinは最も古い event_timestamp を持つ行を保持し、残りを破棄します。

フィールド仕様

CSVファイルには、以下にリストされている必須ヘッダーをすべて含める必要がありますが、特定のフィールドへの入力は任意です。

列の順序は問いませんが、ヘッダー名は完全に一致する必要があります。

イベント期間: AppLovinは、利用可能なすべての注文履歴をアップロードすることを強くお勧めします。

フィールド値の入力は必須?タイプ説明値
country_codeはいStringISO 3166 国コードUS
currencyはいStringISO 4217 形式の取引通貨(3文字のコード)USD
emailはいString顧客のメールアドレス。プレーンテキストのメールアドレスを提供してください。AppLovin側でハッシュ化します。customer@example.com
event_nameはいStringpurchase である必要がありますpurchase
event_timestampはいString購入が発生した日時
  • ISO 8601 形式(UTC)
  • ISO 8601 形式(オフセットあり)
  • Unixタイムスタンプ
  • mm/dd/yyyy
  • 2025-11-10T15:30:00Z
  • 2025-11-10T15:30:00+01:00
  • 1459315678
  • 11/10/2025
transaction_idはいString注文の一意の識別子(注文ID、チェックアウトIDなど)。これは重複排除に不可欠です。txn_12345
user_idはいStringお客様の社内顧客ID。user_abc123
valueはいDouble取引の総額。0以上の数値である必要があります。通貨記号は含めないでください。99.99
zipいいえString顧客の郵便番号。これは取引の請求先郵便番号である必要があります。米国の郵便番号の場合は、最初の5桁のみを含めてください。12345
idfvいいえStringユーザーの identifier for vendors。f325g3gb-12fc-352f-c6c3-dz52f0f690d8
ifaいいえStringユーザーの identifier for advertisers。これは IDFA または GAID のいずれかです。918f1d4f-d195-4a8b-af47-44683fe11db9
phoneいいえString顧客の電話番号。国コード(例: +1)を含める必要があります。プレーンテキストの番号を提供してください。AppLovin側でハッシュ化します。+14155551234

AppLovinは、提供されたプレーンテキストのメールアドレスと電話番号をハッシュ化します。

ご自身でハッシュ化を行いたい場合は、以下のガイドラインに慎重に従って行ってください。

ハッシュにソルト(salt)を追加しないでください。 正規化された値に対してのみ、通常の SHA-256 を使用してください。ソルト、ペッパー、または二重にハッシュ化された値は、AppLovin側で一致させることができず、値がないものとして処理されます。

email
先頭または末尾の空白を削除します。大文字を小文字に変換します。その後、SHA256でハッシュ化します。不正な形式のメールアドレスは、空の値を生成する必要があります。

gmail.com および googlemail.com の場合のみ、まず @ の前にあるすべてのピリオドを削除し、最初のプラス記号(+)とそれ以降のすべての文字を削除します。ドメインは変更しないでください。@ の前に何も残らない場合は、空の値を生成します。

phone
先頭または末尾の空白を削除します。 また、先頭のゼロも削除します。 ハイフン、プラス記号、またはその他の記号を削除します。 文字を対応する数字に変換します。 常に国コードを含めてください(たとえば、米国の電話番号の場合は 1)。 その後、SHA256でハッシュ化します。

例(メールアドレスの場合):

入力正規化後SHA256
Alice@Example.COMalice@example.comff8d9819fc0e12bf0d24892e45987e249a28dce836a85cad60e28eaaa8c6d976
J..A.NE+work.more+extra@GMAIL.COMjane@gmail.com988b074286b20c503e3015c2076533f3bf4ce5ca6f8a507ab52c2e0f98d620b7
Jane.Doe+Work@GoogleMail.comjanedoe@googlemail.com338abf9ef1c8793cadc7bcf51ed595338eb727ed9e06ce3d91d566d60b975937

以下にリファレンス実装を示します。それぞれ、上記の2番目の例のハッシュを出力します。実行して、同じ値が得られることを確認してください。

#include <algorithm>
#include <cctype>
#include <iostream>
#include <regex>
#include <string>

#include <openssl/sha.h>

std::string normalizeAndHash(std::string email)
{
    email.erase(0, email.find_first_not_of(" \t\n\r\f\v"));
    email.erase(email.find_last_not_of(" \t\n\r\f\v") + 1);
    std::transform(email.begin(), email.end(), email.begin(),
                   [](unsigned char c) { return std::tolower(c); });

    static const std::regex valid("^[!-?A-~]+@[!-?A-~]+$");
    if (!std::regex_match(email, valid))
        return "";

    const auto at = email.find('@');
    std::string local = email.substr(0, at);
    const std::string domain = email.substr(at + 1);
    if (domain == "gmail.com" || domain == "googlemail.com")
    {
        local = local.substr(0, local.find('+'));
        local.erase(std::remove(local.begin(), local.end(), '.'), local.end());
        if (local.empty())
            return "";
    }

    const std::string normalized = local + "@" + domain;
    unsigned char hash[SHA256_DIGEST_LENGTH];
    SHA256(reinterpret_cast<const unsigned char*>(normalized.data()),
           normalized.size(), hash);

    static constexpr char digits[] = "0123456789abcdef";
    std::string out;
    for (const unsigned char value : hash)
    {
        out += digits[value >> 4];
        out += digits[value & 15];
    }
    return out;
}

int main()
{
    std::cout << normalizeAndHash("  J..A.NE+work.more+extra@GMAIL.COM  ") << "\n";
}

主な検証ルール

  • ヘッダー: ファイルには、上記にリストされている必須ヘッダーがすべて含まれている必要があります。
  • 識別子の要件: 各行には user_id と email が含まれている必要があります。 AppLovinは、これらの列の値が欠落している行を拒否します。
  • イベント名: event_name 列が存在し、その値が purchase である必要があります。
  • 取引額: value 列には、0以上の非負の数値(≥0)が含まれている必要があります。
  • 国コード: AppLovinは、以下の国/地域における顧客に関連する注文履歴データを受け入れません。
    • AX — オーランド諸島
    • AD — アンドラ
    • AT — オーストリア
    • BE — ベルギー
    • DK — デンマーク
    • FO — フェロー諸島
    • FI — フィンランド
    • FR — フランス
    • DE — ドイツ
    • GI — ジブラルタル
    • GR — ギリシャ
    • GG — ガーンジー
    • IS — アイスランド
    • IE — アイルランド
    • IM — マン島
    • IT — イタリア
    • JE — ジャージー
    • LI — リヒテンシュタイン
    • LU — ルクセンブルク
    • MT — マルタ
    • MC — モナコ
    • NL — オランダ
    • NO — ノルウェー
    • PT — ポルトガル
    • SM — サンマリノ
    • ES — スペイン
    • SJ — スヴァールバル諸島およびヤンマイエン島
    • SE — スウェーデン
    • CH — スイス
    • GB — イギリス

CSVファイルの例

有効なCSVファイルの例を以下に示します。

event_name,user_id,phone,email,event_timestamp,value,currency,transaction_id,country_code,zip,idfv,ifa
purchase,user_abc123,+14155551234,user@example.com,2025-11-10T16:45:00Z,99.99,USD,txn_12345,US,12345,f325g3gb-12fc-352f-c6c3-dz52f0f690d8,918f1d4f-d195-4a8b-af47-44683fe11db9
purchase,user_def456,+14155555678,customer@example.com,2025-11-10T16:45:00Z,149.5,USD,txn_67890,US,12345,f325g3gb-12fc-352f-c6c3-dz52f0f690d8,918f1d4f-d195-4a8b-af47-44683fe11db9
purchase,user_ghi789,+14155559012,shopper@example.com,2025-11-10T17:20:00Z,75,EUR,txn_11223,US,12345,f325g3gb-12fc-352f-c6c3-dz52f0f690d8,918f1d4f-d195-4a8b-af47-44683fe11db9

search