> For the complete documentation index, see [llms.txt](https://docs.customerglu.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.customerglu.com/miscellaneous-topics/referrals/firebase.md).

# Firebase

### Setting up deep link in Firebase

* Log into your firebase account
* Go to **Dynamic Link** section
* Click on **Add URL Prefix**

![](/files/-MSlkRCaPDAmEp2wlbfW)

* Enter the domain name you want to create. From the drop-down select a Google-Provided domains Eg: \<domain-you-entered>.page.link
* Share the WebAPI key with CustomerGlu from your firebase console. It can be found \
  &#x20;**Settings > General> Web API Key**

![](/files/-MSlmpWoCtuVfCd_Xjlq)

* Share following with CustomerGlu
  * **androidPackageName** for android apps
  * **iosBundleId** for ios apps
  * **iosAppStoreId** for ios apps
  * **Default URL** to redirect to if opened from outside ios or android ecosystem
  * **Web API** **Key** see above
  * **URL Prefix** see above **eg:** `<domain-you-entered>.page.link`

### Processing referral link from devices

\
Please refer to the following documentation for receiving and processing the referral links\
Android: <https://firebase.google.com/docs/dynamic-links/android/receive>\
iOS: <https://firebase.google.com/docs/dynamic-links/ios/receive>\
\
The referlink that you extract will be of the format [**https://\<default-url>/?userId=**](https://finin.in/?userId=)**\<referrer'sUserId>\&referralCode=\<code>**\
You can extract this userId by parsing the query parameter of the deepLink like so,

```
// Android
String referrerUserId = deepLink.getQueryParameter("userId");

//iOS
let queryItems = URLComponents(url: deepLink, resolvingAgainstBaseURL: true)?.queryItems
let referrerUserId = queryItems?.filter({(item) in item.name == "userId"}).first?.value
```

### referredBy

Store the referrer userId information and pass it as **referredBy** property in the device registration call for the new user:

```json
{
    "userId": "<new-user-Id>",
    "deviceId": "asd",
    "deviceName": "TestDevice",
    "deviceType": "android",
    "writeKey": "write-key",
    "firebaseToken": "firebase-token",
    "referredBy": "referrerUserId"
}
```

Note: On installation where there is no referrer, you need not send referredBy property in the call

### referralCode

Store the referral code information and pass it as **referralCode** property in the device registration call for the new user:

```json
{
    "userId": "<new-user-Id>",
    "deviceId": "asd",
    "deviceName": "TestDevice",
    "deviceType": "android",
    "writeKey": "write-key",
    "firebaseToken": "firebase-token",
    "referralCode": "ABC-123"
}
```

Note: On installation where there is no referrer, you need not send referralCode property in the call

### Processing referral from registration/app download web page

If your app is not available in the play/app store and you have an app download flow via a webpage, please follow the below steps

* Provide download page URL to CustomerGlu, eg: `https://testclient.com/register`
* When a user clicks on the referralLink he will be redirected to the default URL provided to us with referrer's userId appended as a query parameter. eg:&#x20;
  * `https://testclient.com/register?userId=userA`
* Extract the referrer's userId from the url and make the [deviceRegistration](/integration-doc.md#register-a-device) call to our server with&#x20;
  * New user's userId&#x20;
  * Referred user's userId as `referredBy` or referral code as `referralCode`
  * other details that are available

```
{
    "userId": "userB",
    "userName": "New User",
    "referredBy":  "userA",
    "phone": "932339089012489",
    "email": "userb@testclient.com"
    "customAttributes": {
        "custom_attr_1": "asdas"
    },
    "writeKey": "<writeKey>"
}
```

* Once the user installs the app and is registered with the same userId (eg: userB in this case), his referral information will be attached to the new user
