트래킹 링크 생성 API를 활용하여 프로모션 공유 캠페인, 친구 초대 캠페인 등 리퍼럴 캠페인에 공유 링크로 사용할 트래킹 링크를 만들 수 있습니다. 이 공유 링크로 수집한 데이터를 리포트에서 확인할 수 있습니다.
아래는 트래킹 링크를 공유 링크로 활용한 리퍼럴 캠페인의 일반적인 시나리오입니다.
유저 B가 ‘서비스 공유하기’, ‘친구 초대하기’ 등 CTA 버튼을 클릭합니다. 그러면 트래킹 링크 생성 API를 통해 생성된 트래킹 링크가 유저 B에게 공유 링크로 전달됩니다.
유저 B가 이메일, 메신저 등을 통해 유저 A에게 공유 링크를 전달합니다.
유저 A가 공유 링크를 클릭합니다. 유저 A는 앱 설치 여부에 따라 앱 마켓 또는 앱 페이지로 이동합니다. 이때 유저 A가 앱을 실행하거나 특정 이벤트를 발생시키면 유저 B에게 보상을 지급할 수 있습니다.
아래 순서에 따라 리퍼럴 캠페인에 사용할 공유 링크를 만들고 성과를 확인하세요.
개발 작업이 필요합니다. 개발자에게 도움을 요청하세요.
1. 유저가 CTA 버튼을 클릭하면 트래킹 링크 생성 API를 통해 트래킹 링크가 생성되도록 개발해 주세요. 트래킹 링크는 트래킹 링크 생성 API에 요청된 파라미터대로 생성됩니다. CTA 버튼이 클릭됐을 때 파라미터 값으로 채널 이름, 캠페인 이름, 딥링크 등을 포함해 트래킹 링크 생성 API에 요청하세요. 아래는 트래킹 링크 생성 API에 요청할 때 전달해야 하는 필수 항목입니다.
파라미터 |
설명 |
---|---|
| 리퍼럴 캠페인을 운영한 채널의 이름입니다. |
| 캠페인 정보입니다. |
| 유저를 보낼 특정 앱 페이지 URL입니다. |
아래 코드를 에어브릿지 가이드와 함께 참고하세요.
$ curl -d '{
{
"channel": "in_app_referral",
"campaignParams": {
"campaign": "referral-01",
"ad_group": "referral",
"ad_creative": "invitation"
},
"isReengagement": "Off",
"deeplinkUrl": "ablog://good-product-growth-team?referrer_id=1668",
"deeplinkOption": {
"showAlertForInitialDeeplinkingIssue": true
},
"fallbackPaths": {
"option": {
"ios": "itunes-appstore",
"android": "google-play"
}
},
"ogTag": {
...
}
}
}' -X POST "'https://api.airbridge.io/v1/tracking-links" -H "Authorization:{AIRBRIDGE-API-TOKEN} -H "Content-Type: application/json
channel
값은 리퍼럴 캠페인을 운영할 채널의 이름입니다. 예시 코드에서는 in_app_referral
입니다.
campaignParams
값은 리퍼럴 캠페인 관련 정보입니다. 예시 코드에서 campaign
값은 referral-01
, ad_group
값은referral
, ad_creative
값은 invitation
입니다.
deeplinkURL
값은 이 트래킹 링크를 클릭한 유저를 보낼 특정 앱 페이지 URL입니다. 예시 코드에서는 ablog://good-product-growth-team?referrer_id=1688
입니다.
이때 예시 코드 안의 referrer_id=1688
처럼 유저 ID 등 추가로 활용하고 싶은 정보가 있다면 아래 예시 코드처럼 파싱해 사용하세요.
안드로이드:onSuccess
함수의 URI를 파싱하도록 에어브릿지 가이드에 따라 설정하세요. 아래 예시 코드에서 referrer_id
는 CTA 버튼을 클릭한 유저의 유저 ID입니다.
Airbridge.getDeeplink(getIntent(), new AirbridgeCallback<Uri>() {
@Override
public void onSuccess(Uri uri) {
try {
Map<String, String> queryParameterMap = new HashMap<>();
for (String key : uri.getQueryParameterNames()) {
String value = uri.getQueryParameter(key);
if (value != null) {
queryParameterMap.put(key, value);
}
}
// Parsing referrerID
String referrerId = queryParameterMap.get("referrer_id");
// Show proper content using url (ablog://good-product-growth-team?referrer_id=1700) and referrerID (1700)
if (referrerId != null) {
}
} catch (Throwable e) {
// Handle exceptions here
}
}
...
Airbridge.getDeeplink(intent, object : AirbridgeCallback<Uri> {
override fun onSuccess(result: Uri) {
try {
val queryParameterMap = mutableMapOf<String, String>()
result.queryParameterNames.forEach { key ->
val value = result.getQueryParameter(key)
if (value != null) {
queryParameterMap[key] = value
}
}
// Parsing referrerID
// Show proper content using url (ablog://good-product-growth-team?referrer_id=1700) and referrerID (1700)
queryParameterMap["referrer_id"]?.let { referrerId ->
}
} catch (e: Throwable) {
// Handle exceptions here
}
}
...
iOS: deeplinkURL
파라미터를 파싱하도록 에어브릿지 가이드에 따라 설정하세요. 아래 예시 코드에서 referrer_id
는 CTA 버튼을 클릭한 유저의 유저 ID입니다.
[AirBridge.deeplink setDeeplinkCallback:^(NSString * _Nonnull deeplinkURLString) {
// Parsing url
NSURL *url = [NSURL URLWithString:deeplinkURLString];
// Parsing referrerID
NSMutableDictionary <NSString *, NSString *>* queryItems = [NSMutableDictionary new];
for (NSURLQueryItem *item in [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO].queryItems) {
[queryItems setValue:item.value forKey:item.name];
}
// Show proper content using url (ablog://good-product-growth-team?referrer_id=1700) and referrerID (1700)
NSString *referrerID = [queryItems valueForKey:@"referrer_id"];
if (referrerID != nil) {
}
}];
AirBridge.deeplink().setDeeplinkCallback { deeplinkURLString in
// Parsing url
guard
let deeplinkURL = URL(string: deeplinkURLString),
let queryItems = URLComponents(url: deeplinkURL, resolvingAgainstBaseURL: false)?.queryItems
else { return }
// Parsing referrerID
var uniqueQueryItems: [String: String] = [:]
queryItems.forEach { item in
uniqueQueryItems[item.name] = item.value
}
// Show proper content using url (ablog://good-product-growth-team?referrer_id=1700) and referrerID (1700)
if let referrerID = uniqueQueryItems["referrer_id"] {
}
}
2. CTA 버튼을 클릭한 유저에게 트래킹 링크가 공유 링크로 제공되도록 개발합니다. 이때 1번의 API 요청으로 생성된 트래킹 링크 중에 trackingLink.shortURL
값을 공유 링크로 제공하는 것을 권장합니다. 아래 코드를 에어브릿지 가이드와 함께 참고하세요.
trackingLink.shortURL
값을 공유 링크로 제공하는 것을 권장합니다. 예시에서는http://abr.ge/6nwx4w
입니다. 기본 도메인인 abr.ge 대신에 다른 도메인을 사용하려면 커스텀 도메인을 설정하세요.
{
"data": {
"trackingLink": {
"id": 77281,
"link": {
"click": "http://abr.ge/@airbridge/my-channel?...",
},
"shortID": "6nwx4w",
"shortURL": "http://abr.ge/6nwx4w",
"trackingTemplateID": "706f9839a7b50d87ab917dbb1b9fa7f3",
"channelType": "custom"
}
},
"at": 1585104275
}
리퍼럴 캠페인 성과를 측정하기 위해서는 공유 버튼 클릭같은 유저 행동을 에어브릿지 이벤트로 수집해야 합니다. 스탠다드 이벤트인 공유(airbridge.share) 이벤트를 수집하거나 커스텀 이벤트로 새로 정의해서 수집할 수 있습니다.
아직 에어브릿지 SDK로 이처럼 이벤트를 수집하고 있지 않다면 에어브릿지 SDK에 인앱 이벤트 전송을 추가로 설정하고 이러한 SDK가 적용된 앱 버전을 배포해야 합니다. 자세한 내용은 아래 에어브릿지 가이드를 참고하세요.
플랫폼 | 개발자 가이드 |
---|---|
Android | |
iOS | |
Web | |
React Native | |
Cordova-Ionic | |
Flutter | |
Expo | |
Unity | |
Unreal |
리포트에서 공유 링크가 수집한 캠페인 데이터를 리포트와 원본 데이터에서 확인할 수 있습니다. 아래 그룹바이를 활용해 캠페인 결과를 분석해 보세요.
그룹바이 | 설명 |
---|---|
Channel | 리퍼럴 캠페인을 운영한 채널의 이름입니다. 트래킹 링크 생성 API 요청 시 코드에 입력된 |
Campaign | 운영한 리퍼럴 캠페인의 이름입니다. 트래킹 링크 생성 API 요청 시 코드에 입력된 |
Ad Group | 운영한 리퍼럴 캠페인의 광고 대상입니다. 트래킹 링크 생성 API 요청 시 코드에 입력된 |
Ad reative | 운영한 리퍼럴 캠페인의 광고 소재입니다. 트래킹 링크 생성 API 요청 시 코드에 입력된 |
아래 사항을 주의해 주세요.
리퍼럴 캠페인을 상세하게 분석하기 위해 트래킹 링크 생성 API를 요청할 때 campaignParams
파라미터의 하위 파라미터를 모두 입력하는 것을 권장합니다.
유저 ID를 활용할 경우 유저 ID는 유저가 서비스에 가입할 때 제공하는 정보나 계정 등 유저를 식별할 수 있는 고유 ID를 활용해 주세요. 에어브릿지에서는 이러한 유저 ID를 관리하지 않습니다.
도움이 되었나요?