# Link Claimer/Referrer

### **Pre-requisites**

* Implement the SDK's recommended [Cookie Management](https://docs.chainvine.xyz/developers/use-cases/broken-reference) approach

### **Best practices**

* In browser environments, fetch the referrer\_id using the getReferrer() method provided by the SDK
* In server environments, supply the referrer directly

### Examples

{% tabs %}
{% tab title="Browser" %}

```typescript
import { ChainvineClient, getReferrer } from '@chainvine/sdk';

const client = new ChainvineClient();

// referrer captured from url parameter and PREVIOUSLY saved with 
// the storeReferrerId() method

const referrer = getReferrer();

const referred_user_wallet = '0x1234567890';

const campaign = {
  id: 'aSlug123'
}

if (referrer) {
  const user = await client.syncUser(referred_user_wallet)
  const res = await user.referral({campaign}).linkReferrer(referrer);
}
```

{% endtab %}

{% tab title="Server" %}

```typescript
import { ChainvineClient } from '@chainvine/sdk';

const client = new ChainvineClient({
    apiKey: '9dj022didj', //your api key <--- IMPORTANT
});

const referrer = 'a user referral code' // <--- provided by your system.

const referred_user_wallet = '0x1234567890';

const campaign = {
  id: 'aSlug123'
}

if (referrer) {
  const user = await client.syncUser(referred_user_wallet)
  const referral = await user.referral({campaign}).linkReferrer(referrer);
}

```

{% endtab %}
{% endtabs %}

### **When you only have the referrer's wallet on hand**

* it is possible to fetch the referrer's ChainVine referreralCode if you only have the referrer's wallet address on hand
* simply call .syncUser with ChainvineClient to retrieve this Identifier from ChainVine

```typescript
import { ChainvineClient } from '@chainvine/sdk';

const client = new ChainvineClient({
    apiKey: '9dj022didj', //your api key <--- IMPORTANT in server-side environments
});

const referred_user_wallet = '0x987654321';

const campaign = {
  id: 'aSlug123'
}

const referrer = await client.syncUser(referred_user_wallet);
const { referralCode } = referrer;

if (referralCode) {
  const user = await client.syncUser(referred_user_wallet)
  const referral = await user.referral({campaign}).linkReferrer(referralCode);
}

```
