Referrals
১. Referral কী? (Definition)
সহজ বাংলায়: Referral মানে হলো — একজন মানুষ আরেকজনকে কোনো product বা service ব্যবহার করার জন্য recommend করা বা পাঠানো।
যে পাঠায় → Referrer যাকে পাঠানো হয় → Referee
২. Real Life Examples
🛒 Example 1 — Shohoz / Pathao (Ride Sharing)
তুমি Pathao use করো। তোমার বন্ধুকে বললে "আমার referral code দিয়ে sign up কর, তুমি ৫০ টাকা পাবি, আমিও পাবো।" বন্ধু সেই code দিয়ে sign up করলো।
এখানে:
- Referrer = তুমি
- Referee = তোমার বন্ধু
- Referral = এই পুরো ঘটনাটা
🛍️ Example 2 — Chaldal / Shajgoj (E-commerce)
Chaldal এর app এ একটা "Invite Friends" button আছে। তুমি link share করলে → বন্ধু সেই link দিয়ে app open করলো। এটাই একটা Referral Event।
💼 Example 3 — B2B SaaS (Office Context)
তোমার company একটা analytics tool use করে। তোমার manager অন্য একটা company তে recommend করলেন। সেই company sign up করলো। এটা B2B Referral।
৩. Referral কীভাবে কাজ করে? (Flow)
[Referrer] ──share──▶ [Unique Link/Code] ──click──▶ [Referee]
│
Sign Up / Install
│
┌───────────▼────────────┐
│ Referral Recorded │
│ in Database │
└───────────┬────────────┘
│
┌───────────▼────────────┐
│ Reward Triggered? │
│ (Yes / No) │
└────────────────────────┘
৪. Referral এর প্রকারভেদ (Types)
Type 1 — Direct Referral
একজন directly আরেকজনকে বলে। Example: WhatsApp এ link পাঠানো।
Type 2 — Code-Based Referral
একটা unique code দেওয়া হয়।
Example: REF-RAHIM-2024 এই code দিয়ে sign up।
Type 3 — Link-Based Referral
একটা unique URL দেওয়া হয়।
Example: app.com/signup?ref=rahim123
Type 4 — Organic Referral (Word of Mouth)
কোনো code বা link ছাড়া — শুধু মুখে মুখে। Example: "Bkash use কর, অনেক ভালো।" ⚠️ এটা track করা কঠিন।
৫. Database এ Referral কীভাবে Store হয়?
Production এ একটা typical referrals table এরকম হয়:
CREATE TABLE referrals (
id SERIAL PRIMARY KEY,
referrer_id INT NOT NULL, -- যে পাঠিয়েছে তার ID
referee_id INT NOT NULL, -- যাকে পাঠানো হয়েছে তার ID
referral_code VARCHAR(50), -- ব্যবহৃত code
referral_source VARCHAR(50), -- 'whatsapp', 'facebook', 'email'
status VARCHAR(20) -- 'pending', 'completed', 'expired'
DEFAULT 'pending',
referred_at TIMESTAMP -- কখন refer করা হয়েছে
DEFAULT NOW(),
converted_at TIMESTAMP, -- কখন convert হয়েছে (NULL হতে পারে)
reward_given BOOLEAN DEFAULT FALSE -- reward দেওয়া হয়েছে কিনা
);
৬. Python দিয়ে Referral Data Analyze করা
Step 1 — Data Load করো (Postgres থেকে)
import psycopg2
import pandas as pd
# Postgres connection
conn = psycopg2.connect(
host="your-host",
database="your_db",
user="your_user",
password="your_password"
)
query = """
SELECT
referrer_id,
referee_id,
referral_code,
referral_source,
status,
referred_at,
converted_at
FROM referrals
WHERE referred_at >= NOW() - INTERVAL '30 days'
"""
df = pd.read_sql(query, conn)
conn.close()
print(df.head())
print(f"Total Referrals (Last 30 days): {len(df)}")
Step 2 — Basic Referral Summary
# মোট referral count
total_referrals = len(df)
# Status অনুযায়ী breakdown
status_breakdown = df['status'].value_counts()
# Source অনুযায়ী breakdown
source_breakdown = df['referral_source'].value_counts()
print("===== Referral Summary =====")
print(f"Total Referrals : {total_referrals}")
print(f"\nBy Status:\n{status_breakdown}")
print(f"\nBy Source:\n{source_breakdown}")
Output দেখতে এরকম হবে:
===== Referral Summary =====
Total Referrals : 1500
By Status:
completed 850
pending 500
expired 150
By Source:
whatsapp 700
facebook 400
email 250
direct 150
Step 3 — Top Referrers খুঁজে বের করো
# কোন user সবচেয়ে বেশি refer করেছে
top_referrers = (
df[df['status'] == 'completed']
.groupby('referrer_id')
.size()
.reset_index(name='successful_referrals')
.sort_values('successful_referrals', ascending=False)
.head(10)
)
print("===== Top 10 Referrers =====")
print(top_referrers)
৭. Referral Funnel — পুরো Journey
১০০০ জন Referral Link পেলো
│
▼
৬০০ জন Link Click করলো ← Click Rate: 60%
│
▼
৪০০ জন Sign Up করলো ← Sign Up Rate: 40%
│
▼
২৫০ জন App Use করলো ← Activation Rate: 25%
│
▼
১৫০ জন Purchase করলো ← Conversion Rate: 15%
প্রতিটা step এর data তোমার referrals table এ থাকবে।
৮. Referral Lifecycle — Status Changes
referred_at এ তৈরি হয়
│
status = 'pending'
│
├──── referee sign up করলো না, ৭ দিন গেলো ──▶ status = 'expired'
│
└──── referee sign up করলো ──▶ status = 'completed'
│
converted_at set হয়
│
reward_given = TRUE
৯. Superset Dashboard এ Referral দেখানো
তোমার Superset এ এই SQL queries use করতে পারো:
Chart 1 — Daily Referral Trend
SELECT
DATE(referred_at) AS referral_date,
COUNT(*) AS total_referrals,
SUM(CASE WHEN status = 'completed' THEN 1 ELSE 0 END) AS completed
FROM referrals
GROUP BY DATE(referred_at)
ORDER BY referral_date;
Chart 2 — Source wise Referral Breakdown
SELECT
referral_source,
COUNT(*) AS total,
ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER (), 2) AS percentage
FROM referrals
GROUP BY referral_source
ORDER BY total DESC;
১০. Production এ Common Mistakes ⚠️
| Mistake | সমস্যা | সমাধান |
|---|---|---|
| Duplicate referral count | একই user দুইবার count হওয়া | referee_id তে UNIQUE constraint দাও |
| Self-referral | নিজেই নিজেকে refer করা | referrer_id != referee_id check করো |
| Expired tracking না করা | Pending গুলো কখনো close হয় না | CRON job দিয়ে ৭ দিন পর expire করো |
| Source tracking মিস | কোথা থেকে এলো জানা যায় না | UTM parameter বা referral_source সবসময় save করো |
| Reward double count | একই referral এ দুইবার reward | reward_given flag check করে তারপর update করো |
১১. CRON Job — Auto Expire Referrals
# cron_expire_referrals.py
# প্রতিদিন রাত ১২টায় run হবে
import psycopg2
from datetime import datetime
def expire_old_referrals():
conn = psycopg2.connect(
host="your-host",
database="your_db",
user="your_user",
password="your_password"
)
cursor = conn.cursor()
expire_query = """
UPDATE referrals
SET status = 'expired'
WHERE status = 'pending'
AND referred_at < NOW() - INTERVAL '7 days'
"""
cursor.execute(expire_query)
affected_rows = cursor.rowcount
conn.commit()
print(f"[{datetime.now()}] Expired {affected_rows} referrals.")
cursor.close()
conn.close()
if __name__ == "__main__":
expire_old_referrals()
Crontab setup:
# প্রতিদিন রাত ১২টায় চলবে
0 0 * * * /usr/bin/python3 /home/etl/cron_expire_referrals.py
সারসংক্ষেপ 🎯
| বিষয় | মূল কথা |
|---|---|
| Referral কী | একজন user আরেকজনকে পাঠানো |
| Track হয় কীভাবে | Unique code বা link দিয়ে |
| Database এ কী থাকে | referrer, referee, status, source, timestamp |
| Production এ সতর্কতা | Duplicate, self-referral, expiry handle করো |
| Dashboard এ দেখাও | Daily trend, source breakdown, top referrers |
Referral Funnel এবং Conversion
১. Funnel কী জিনিস?
Funnel মানে হলো চোঙা বা ফানেল — উপরে চওড়া, নিচে সরু।
Business এ Funnel মানে:
অনেক মানুষ শুরু করে, কিন্তু প্রতিটা step এ কিছু মানুষ ঝরে যায়, শেষে অল্প কিছু মানুষ থাকে।
████████████████████ ← ১০০০ জন (শুরু)
████████████ ← ৬০০ জন
████████ ← ৪০০ জন
█████ ← ২৫০ জন
███ ← ১৫০ জন (শেষ)
উপরে বেশি মানুষ → নিচে কম মানুষ। এই shape টাই Funnel।
২. Referral Funnel কী?
Referral Funnel হলো —
একটা referral link/code তৈরি হওয়া থেকে শুরু করে সেই referee একজন actual customer হওয়া পর্যন্ত পুরো journey কে steps এ ভাগ করা।
প্রতিটা step এ কতজন আছে সেটা track করাই হলো Referral Funnel Analysis।
৩. Referral Funnel এর প্রতিটা Step — Real Example দিয়ে
🏪 ধরো একটা Bangladeshi Food Delivery App "FoodBD"
STEP 1 — Referral Sent (Link পাঠানো হলো)
রহিম তার ৫ জন বন্ধুকে referral link পাঠালো।
এই ৫ জন এখন funnel এর TOP এ আছে।
Count = ৫
STEP 2 — Link Clicked (Link এ click করলো)
৫ জনের মধ্যে ৩ জন link এ click করলো।
২ জন ignore করলো।
Count = ৩
Drop = ২ জন ঝরে গেলো
STEP 3 — Signed Up (Account খুললো)
৩ জন click করলো, কিন্তু ২ জন sign up করলো।
১ জন sign up page দেখে চলে গেলো।
Count = ২
Drop = ১ জন ঝরে গেলো
STEP 4 — Activated (App actually use করলো)
২ জন sign up করলো, কিন্তু ১ জন app open করে
কিছু না করেই বন্ধ করলো।
শুধু ১ জন actually app browse করলো।
Count = ১
Drop = ১ জন ঝরে গেলো
STEP 5 — Converted (Order দিলো / Purchase করলো) ✅
সেই ১ জন finally একটা food order দিলো।
এখন সে একজন real customer।
Count = ১
এই মানুষটাই "Converted Referee"
পুরো Funnel একসাথে:
STEP 1 │ Referral Sent │ ████████████████████ │ ৫ জন │ 100%
STEP 2 │ Link Clicked │ ████████████ │ ৩ জন │ 60%
STEP 3 │ Signed Up │ ████████ │ ২ জন │ 40%
STEP 4 │ Activated │ ████ │ ১ জন │ 20%
STEP 5 │ Converted │ ██ │ ১ জন │ 20%
৪. "Converted" মানে কী? 💡
এটা অনেক গুরুত্বপূর্ণ প্রশ্ন।
"Converted" মানে — referee এমন একটা কাজ করলো যেটা business এর জন্য valuable।
কিন্তু "valuable কাজ" টা কী — সেটা company to company আলাদা।
বিভিন্ন Business এ Conversion মানে আলাদা:
| Business Type | Converted মানে |
|---|---|
| Food Delivery App | প্রথম order দেওয়া |
| E-commerce (Chaldal) | প্রথম purchase করা |
| Ride Sharing (Pathao) | প্রথম ride নেওয়া |
| SaaS Tool | Paid plan এ upgrade করা |
| Bank / FinTech (Bkash) | Account activate করে প্রথম transaction করা |
| Gaming App | Level 5 পার করা |
| News App | ৭ দিন continuously পড়া |
⚠️ Important — Sign Up মানেই Converted না!
এটা অনেকে confuse হয়।
❌ ভুল ধারণা:
"বন্ধু sign up করলেই referral successful"
✅ সঠিক ধারণা:
"বন্ধু sign up করে actually কিছু একটা করলে তবেই converted"
কেন? কারণ অনেকে sign up করে আর কখনো ফেরে না। Business এর কাছে এই মানুষটার কোনো value নেই।
সারসংক্ষেপ 🎯
| বিষয় | মূল কথা |
|---|---|
| Funnel কী | অনেকে শুরু করে, কমতে কমতে কিছু মানুষ শেষ পর্যন্ত থাকে |
| Referral Funnel | Sent → Clicked → Signed Up → Activated → Converted |
| Converted মানে | Referee business এর কাছে valuable কিছু একটা করলো |
| Converted মানে কী তা নির্ভর করে | Business এর goal এর উপর |
| Sign Up = Converted? | না! Sign Up আর Conversion আলাদা জিনিস |
| কেন গুরুত্বপূর্ণ | কোন step এ বেশি মানুষ ঝরছে সেটা বের করে fix করা যায় |