AppsFlyer

AppsFlyer là nền tảng hàng đầu về attribution di động và phân tích marketing. Đây là dịch vụ bên thứ ba giúp thu thập và tổ chức dữ liệu từ các chiến dịch marketing, cho phép doanh nghiệp xem hiệu quả toàn bộ chiến dịch tại một nơi.

Adapty cung cấp đầy đủ dữ liệu để bạn theo dõi các sự kiện gói đăng ký từ các cửa hàng tập trung tại một chỗ. Với Adapty, bạn dễ dàng nắm bắt hành vi người dùng, hiểu sở thích của họ và dùng thông tin đó để giao tiếp có mục tiêu và hiệu quả. Nhờ vậy, tích hợp này cho phép bạn theo dõi các sự kiện gói đăng ký trong AppsFlyer và phân tích chính xác doanh thu mà các chiến dịch mang lại.

Tích hợp giữa Adapty và AppsFlyer hoạt động theo hai hướng chính.

  1. Nhận dữ liệu attribution từ AppsFlyer
    Sau khi bạn thiết lập gửi attribution từ AppsFlyer về Adapty trong code ứng dụng, Adapty sẽ bắt đầu nhận dữ liệu attribution từ AppsFlyer. Bạn có thể xem dữ liệu này dễ dàng trên trang hồ sơ người dùng.
c2991f6-CleanShot_2023-08-04_at_16.29.202x.webp
  1. Gửi sự kiện gói đăng ký đến AppsFlyer
    Adapty có thể gửi tất cả các sự kiện gói đăng ký đã được cấu hình trong tích hợp của bạn đến AppsFlyer. Nhờ đó, bạn sẽ có thể theo dõi các sự kiện này trong dashboard AppsFlyer, rất hữu ích để đánh giá hiệu quả của các chiến dịch quảng cáo.

Thiết lập cấu hình

Kết nối Adapty với AppsFlyer

Để thiết lập tích hợp với AppsFlyer:

  1. Mở Integrations -> AppsFlyer trong Adapty Dashboard.

  2. Bật toggle để kích hoạt tích hợp.

  3. Bước tiếp theo là nhập thông tin xác thực. Với iOS, tìm App ID bằng cách sao chép Apple ID trong App Store Connect (để làm điều này, mở trang ứng dụng của bạn trong App Store Connect, vào trang App Information trong mục General, và tìm Apple ID ở góc dưới bên trái màn hình).

43a5cc6-apple_id.webp

3.2. Dán Apple ID vừa sao chép vào trường iOS App ID trong Adapty Dashboard.

61bff5a-appsflyer_iOS_app_id.webp

Nếu bạn đang dùng AppsFlyer API 2, bạn cần chuyển sang API 3 vì phiên bản cũ sẽ sớm bị AppsFlyer ngừng hỗ trợ. Để làm điều này, trong danh sách AppsFlyer S2S API, chọn API 3.

  1. Với cả iOS và Android, mở trang AppsFlyer và đăng nhập.

  2. Nhấp vào Tên tài khoản của bạn -> Security Center ở góc trên bên phải dashboard.

1c18c50-appsflyer_security_center.webp
  1. Trong cửa sổ Manage your account security, nhấp vào nút Manage your AppsFlyer API and S2S tokens.

  2. Nếu bạn đã có S2S token, hãy chuyển đến bước 12. Nếu chưa có, nhấp vào nút New token.

7934920-appsflyer_new_token.webp
  1. Trong cửa sổ New token, nhập tên cho token. Tên này chỉ dùng để bạn tham khảo.

  2. Chọn S2S trong danh sách Choose type.

  3. Nhấp vào nút Create new token để lưu token mới.

  4. Trong cửa sổ Tokens, sao chép S2S token.

  5. Trong Adapty Dashboard, dán S2S key vừa sao chép vào các trường Dev key for iOSDev key for Android.

a7d1c31-appsflyer_dev_keys.webp
  1. Nhấp vào nút Save để lưu thay đổi.

    AppsFlyer không có chế độ Sandbox cho tích hợp server-to-server. Vì vậy, bạn cần một ứng dụng/tài khoản riêng trong AppsFlyer cho Sandbox Dev Key. Nếu muốn gửi sự kiện sandbox về cùng một ứng dụng, hãy dùng chung key cho cả production và sandbox.

Adapty mặc định ánh xạ một số sự kiện sang sự kiện chuẩn của AppsFlyer. Với cấu hình này, AppsFlyer có thể chuyển tiếp sự kiện đến từng mạng quảng cáo bạn sử dụng mà không cần thiết lập thêm.

Một điều quan trọng nữa là AppsFlyer không hỗ trợ các sự kiện cũ hơn 26 giờ. Vì vậy, nếu có sự kiện đã quá 26 giờ, Adapty vẫn gửi đến AppsFlyer, nhưng ngày giờ của sự kiện sẽ được thay thế bằng thời điểm hiện tại.

Cấu hình sự kiện và thẻ

Bên dưới phần thông tin xác thực, có ba nhóm sự kiện bạn có thể gửi từ Adapty đến AppsFlyer. Chỉ cần bật những sự kiện bạn cần. Xem danh sách đầy đủ các sự kiện mà Adapty cung cấp tại đây.

1b0c777-CleanShot_2023-08-11_at_14.56.362x.webp

Chúng tôi khuyến nghị sử dụng tên sự kiện mặc định do Adapty cung cấp. Tuy nhiên, bạn có thể thay đổi tên sự kiện tùy theo nhu cầu.

Adapty sẽ gửi các sự kiện gói đăng ký đến AppsFlyer thông qua tích hợp server-to-server, cho phép bạn xem toàn bộ sự kiện gói đăng ký trong dashboard AppsFlyer và liên kết chúng với các chiến dịch thu thập người dùng.

Kết nối ứng dụng với AppsFlyer

Sau khi hoàn thành các bước trên, hãy gọi phương thức updateAttribution để lưu dữ liệu attribution, và dùng Adapty.setIntegrationIdentifier() để thiết lập định danh tích hợp.

Khởi tạo AppsFlyer SDK và chờ callback UID của nó trước khi xác định người dùng trong Adapty. Nếu không, appsflyer_id sẽ gắn vào hồ sơ người dùng ẩn danh tạm thời được tạo ra khi khởi động, và không phải lúc nào cũng được chuyển sang hồ sơ đã xác định. Khi điều đó xảy ra, việc chuyển tiếp doanh thu AppsFlyer sẽ thất bại mà không có thông báo lỗi.

Cấu trúc sự kiện

Adapty gửi các sự kiện đã chọn đến AppsFlyer qua POST request với JSON body đến:

  • API v2: https://api2.appsflyer.com/inappevent/{app_id}
  • API v3: https://api3.appsflyer.com/inappevent/{app_id} (khuyến nghị)

Mỗi sự kiện có cấu trúc như sau:

{
  "appsflyer_id": "1699887556000-6192770",
  "eventName": "subscription_renewed",
  "eventTime": "2024-03-01 12:00:00",
  "eventValue": "{\"af_content_id\":\"yearly.premium.6999\",\"af_order_id\":\"GPA.3383-4699-1373-07113\",\"store_country\":\"US\",\"profile_country\":\"US\",\"af_content_type\":\"in_app\",\"af_revenue\":\"9.9900\",\"af_currency\":\"USD\",\"af_quantity\":\"1\"}",
  "os": "17.0.1",
  "bundleIdentifier": "com.example.app",
  "customer_user_id": "user_12345",
  "eventCurrency": "USD",
  "ip": "192.168.100.1",
  "advertising_id": "00000000-0000-0000-0000-000000000000",
  "idfa": "00000000-0000-0000-0000-000000000000",
  "idfv": "00000000-0000-0000-0000-000000000000",
  "att": "3"
}

Trong đó:

Tham sốKiểuMô tả
appsflyer_idStringAppsFlyer ID (thu thập qua SDK).
eventNameStringTên sự kiện AppsFlyer (được ánh xạ từ sự kiện Adapty).
eventTimeStringNgày giờ xảy ra sự kiện (UTC, định dạng YYYY-MM-DD HH:MM:SS).
eventValueStringChuỗi JSON chứa chi tiết sự kiện (xem bên dưới).
osStringPhiên bản hệ điều hành.
bundleIdentifierStringBundle ID / package name của ứng dụng.
customer_user_idStringCustomer User ID của người dùng.
eventCurrencyStringMã tiền tệ (ví dụ: “USD”).
ipStringĐịa chỉ IP của người dùng.
advertising_idStringChỉ Android. Google Advertising ID.
idfaStringChỉ iOS. ID for Advertisers.
idfvStringChỉ iOS. ID for Vendors.
attStringChỉ iOS. Trạng thái App Tracking Transparency (ví dụ: “3” nghĩa là đã được cấp phép).

Tham số eventValue là một chuỗi JSON được mã hóa chứa các trường sau:

Tham sốKiểuMô tả
af_content_idStringProduct ID từ cửa hàng.
af_order_idStringID giao dịch gốc.
store_countryStringMã quốc gia của người dùng theo cửa hàng.
profile_countryStringMã quốc gia dựa trên IP người dùng.
af_content_typeStringLuôn là in_app nếu có doanh thu.
af_revenueStringDoanh thu được định dạng đến 4 chữ số thập phân.
af_currencyStringMã tiền tệ.
af_quantityStringLuôn là 1 nếu có doanh thu.

Khắc phục sự cố

Sai lệch doanh thu

Nếu có sự chênh lệch doanh thu giữa Adapty và AppsFlyer, nguyên nhân thường là do không phải tất cả người dùng đều đang dùng phiên bản ứng dụng có tích hợp Adapty SDK. Để đảm bảo tính nhất quán của dữ liệu, bạn có thể buộc người dùng cập nhật lên phiên bản ứng dụng có Adapty SDK.

Thiếu dữ liệu tích hợp

Nếu việc gửi sự kiện thất bại, nguyên nhân thường là thiếu dữ liệu tích hợp. Hãy kiểm tra các điều sau để khắc phục:

  • Ứng dụng của bạn đã cài đặt AppsFlyer SDK.
  • Bạn đang gọi phương thức getAppsFlyerUID.

Lỗi xác thực

Nếu bạn gặp lỗi Failed to authenticate trong console, nguyên nhân có thể là do không khớp giữa phiên bản AppsFlyer và phiên bản thông tin xác thực.

Xem hướng dẫn migration hoặc thay thế thông tin xác thực bằng thông tin hợp lệ từ đây.