New Feature: Invite Friends via Link & Email - No More Barriers to Group Bill Splitting

Introducing the Invite Friends via Link & Email feature on ChiaHoaDon - send invitations directly, track status, and automatically add members to your expense groups.

Published onFebruary 11, 2026
14 min read
AuthorChiaHoaDon Team

New Feature: Invite Friends via Link & Email

Are you having trouble inviting friends to join your expense-sharing activities? Sending individual messages? Copy-pasting links? Not knowing if they've received it?

Today, ChiaHoaDon proudly launches the Invite Friends via Link & Email feature - helping you invite, track, and manage participation invitations professionally, automatically, and conveniently.

The Old Problem With Inviting Members

📋 Traditional Methods

Manual messaging:

  • Copy the activity link
  • Paste into Zalo, Messenger, Telegram
  • Write your invitation
  • Send to each person one by one
  • Wait for responses...

Result: Takes 5-10 minutes every time you invite someone!

😕 Name Confusion

Problem with similar names:

  • Which "An"? "An" from where?
  • 3 "Minh"s in the group - invited the wrong person!
  • Don't know who the invitee is

😩 Result: Wrong person invited, have to cancel and re-invite!

🚫 Hard to Invite Unregistered Users

When friends don't have an account:

  • Have to ask them to register first
  • After registering, come back to add them
  • Expenses already incurred can't be calculated
  • Forget who hasn't joined yet

😫 Result: Frustrating, time-consuming, easy to miss!

❌ No Tracking

Common questions:

  • "Did they receive the link?"
  • "Have they registered yet?"
  • "Have they joined the activity?"
  • "What if they declined?"

😩 Result: No idea about invitation status, have to ask again!

🔄 Repetitive Data Entry

When friends join:

  • Have to manually add them to the activity
  • Set up expense sharing again
  • If friend hasn't registered, have to do it later!

😫 Result: Repeating work, prone to errors!

The New Solution: Invite Friends via Email

⚡ Send Invitations in 3 Steps

With the Invite Friends feature, you just need to:

  1. Enter the email of the person you want to invite
  2. Write a personal message (optional)
  3. Send - The system handles the rest!

✅ Invitation email is sent automatically ✅ Secure link valid for 7 days ✅ Track invitation status ✅ Auto-add when accepted

🎯 vs Traditional Methods

FeatureOld WayInvite via Email
Send linkManual copy-paste✅ Automatic
Personal messageWrite individual messages✅ Included in email
Track statusNo way to know✅ Viewable
Auto remindersNone✅ Email reminder
Add membersManual✅ Automatic
Not registered yetEnter later✅ Temp user created
Accept/DeclineNot available✅ Invitees decide
Temp dataLost on registration✅ Auto-migration

🤝 Accept or Decline

Invitees have the right to:

  • Accept the invitation to join the activity
  • Decline if not interested or not available

Privacy:

  • Invitees decide for themselves
  • Not forced to join
  • Notifications sent to inviter when there's a response

👤 Temporary User - No Registration Required

When sending invitation to unregistered email:

  1. System automatically creates a Temporary User
  2. Temporary User is added to activity immediately
  3. Can add expenses like real members
  4. No need to wait for registration - activity proceeds normally

When invitee registers an account:

  1. Click "Accept Invitation"
  2. Register new account
  3. Automatically migrate data from Temp User to Real User
  4. Preserve added expenses, activity history

No data loss: All information preserved!

🔄 Automatic Data Migration

Temp User + Expenses → Real User + Expenses

Automatically transferred:

  • ✅ Display name
  • ✅ Added expenses
  • ✅ Established splits
  • ✅ Activity history

Seamless experience: No need to re-enter from scratch!

How It Works

🚀 Invitation Process

Step 1: Open Invitation Dialog

From any activity:

  1. Click "Invite members" button
  2. "Invite friends" dialog appears
  3. Enter required information

Step 2: Enter Information

Required information:

  • Email: Email address of invitee
  • Display name: (Optional) Name you want them to see

Optional information:

  • Personal message: Your invitation message (max 500 characters)
    • Explain why you're inviting
    • Introduce the activity
    • Show you care

Step 3: Send Invitation

  1. Click "Send invitation"
  2. System processes:
    • Creates Temp User (if not registered)
    • Creates invitation with secure token
    • Sends email to invitee
  3. Receive confirmation of successful send

📧 What Does the Invitation Email Look Like?

Email Content

The invitation email includes:

ComponentDescription
Subject"You're invited to join [Activity Name]"
Inviter"[Your Name] has invited you"
ActivityName and description
MessagePersonal message from inviter
CTA button"Accept Invitation" (prominent)
ValidityLink valid for 7 days
Option"Ignore" if not interested

Email Design

Beautiful and professional:

  • Header with ChiaHoaDon logo
  • Message highlighted with left border
  • Prominent blue CTA button
  • Responsive - looks great on all devices
  • Supports Vietnamese and English
https://chiahodan.com/invites/accept?token=ABC123XYZ...

Features:

  • 32-byte secure token - impossible to guess
  • Valid for 7 days from send time
  • One link - one invitation - cannot be shared
  • Safe - only invitee can use it
  1. Logged in: Redirect to confirmation page
  2. Not logged in: Redirect to register → then confirm
  3. Link expired: Show error message
  4. Link already used: Show already accepted message

Invite Experience

📱 When Receiving Email

Email is designed to:

  • Easily recognize who invited you
  • Immediately understand what the activity is
  • Make quick decisions

Possible actions:

  • Accept: Click button, confirm participation
  • Decline: Click "Ignore" or report not interested
  • 🔗 Learn more: Click link to view activity details

👤 New Users (Not Registered Yet)

Joining process:

  1. Receive invitation email
  2. Click "Accept Invitation"
  3. Register new account (if no account)
  4. Confirm accepting the invitation
  5. Automatically added to the activity
  6. Receive success notification email

Special feature:

  • Temp user info (participated before) is preserved
  • No expense data lost

👤 Existing Users

Joining process:

  1. Receive invitation email
  2. Click "Accept Invitation"
  3. Confirm accepting the invitation
  4. Automatically added to the activity
  5. Redirected to activity page

Fast: Only 1-2 clicks needed!

Managing Invitations

📊 Management Dashboard

View All Sent Invitations

Invitation list:

StatusMeaning
PendingSent, awaiting response
AcceptedInvitee has joined
RejectedInvitee declined
ExpiredLink expired after 7 days
CancelledInviter cancelled

Search and Filter

  • Search by email of invitee
  • Filter by status
  • Search by activity

🔄 Invitation Actions

Cancel Invitation

When to cancel:

  • Invitee hasn't responded after several days
  • Wrong information, need to resend
  • Activity has changed

How to do it:

  1. Go to invitation list
  2. Find invitation to cancel
  3. Click "Cancel invitation" button
  4. Confirm

Resend Invitation

When to resend:

  • Old invitation expired
  • Invitee didn't receive email
  • Need to remind invitee

How to do it:

  1. Go to invitation list
  2. Find invitation to resend
  3. Click "Resend" button
  4. New email sent, new token created

📧 Notifications for Inviter

When Invitation Is Accepted

Notification email:

  • Subject: "[Name] has accepted your invitation!"
  • Content:
    • Who accepted
    • They'll appear in the activity
    • Time of acceptance

Emotion: Excited, knowing who joined!

When Invitation Is Rejected

Notification email:

  • Subject: "[Name] has declined your invitation"
  • Content:
    • Who declined
    • (Optional) Reason for declining
    • Time of rejection

Action: Can invite someone else!

Smart Features

🛡️ Security

Secure Token

Token is created using:

randomBytes(32) // 32 random bytes
.toString("base64") // Safe encoding
.replace(/\+/g, "-") // URL-safe
.replace(/\//g, "_")
.replace(/=/g, "");

Features:

  • Impossible to guess
  • 43 characters after encoding
  • Each invitation has unique token
  • Cannot be faked

7-Day Validity

Why 7 days:

  • Enough time for invitee to check email
  • Not too long to waste the link
  • Security - link doesn't last forever

After 7 days:

  • Link expires
  • Invitee cannot use it
  • Inviter can resend

🤖 Automation

Temp User (Temporary User)

When sending invitation to unregistered email:

  1. System creates Temp User
  2. Temp User is added to activity immediately
  3. They can add expenses like real members
  4. When they register, data is migrated automatically

Benefits:

  • No need to wait for registration to participate
  • Expense data isn't lost
  • Seamless experience

Data Migration

Migration process:

Temp User + Expenses → Real User + Expenses

Preserved:

  • ✅ Display name
  • ✅ Added expenses
  • ✅ Established splits
  • ✅ Activity history

📧 Smart Email

Multi-Language Support

Automatic language:

  • If invitee uses Vietnamese → Vietnamese email
  • If invitee uses English → English email
  • Inviter also receives notification in their language

Respect Preferences

Users can:

  • Turn off email notifications
  • Choose which emails to receive
  • Unsubscribe from emails

System:

  • Automatically respects preferences
  • Doesn't send if user opted out
  • Still shows in-app

Real Examples

🎉 Case 1: Inviting Friends to a Trip

Scenario:

Activity: "Da Lat Trip 2026"
Current members: 4 people
Need to invite: 2 more friends

Invitation setup:
- Email 1: [email protected]
  Message: "Finally going to Da Lat! We're planning the trip, want to join? 🎒"

- Email 2: [email protected]
  Message: "This summer we're going to Da Lat! Our friends are going too, join us! 🎈"

Result:

  1. Emails sent immediately
  2. 2 friends receive personalized invitations
  3. They click, accept
  4. Automatically added to trip group
  5. Receive new expense notifications

🏠 Case 2: Inviting Roommate

Scenario:

Activity: "District 1 Apartment Rent"
Members: 2 people already living there
Need to invite: 1 more person

Email sent:
- Email: [email protected]
  Message: "Looking for someone to share District 1 apartment, are you interested? Nam and I've been here 1 year, join us!"

Special:

  • Friend doesn't have an account yet
  • System creates Temp User
  • Can participate immediately, add utility expenses
  • Everything preserved when registering

🎂 Case 3: Inviting Birthday Guests

Scenario:

Activity: "Minh's Birthday Party!"
Members: 5 organizers
Need to invite: Minh's friends

Batch emails:
- [email protected]: "It's Minh's birthday! Come celebrate! 🎂"
- [email protected]: "Birthday party Saturday night, are you free? 🎈"
- [email protected]: "We're throwing Minh a birthday party, join us! 🎁"

Convenient:

  • Send multiple emails at once
  • Each has personal message
  • Track who received and who responded

Comparison with Traditional Methods

📊 Detailed Comparison

CriteriaManual Link CopyInvite via Email
Send time2-3 minutes/time30 seconds/time
Personal messageMust write separate messagesBuilt into email
Status tracking❌ No✅ Yes
Auto reminders❌ No✅ Yes
Auto-add members❌ Manual✅ Automatic
Temp user❌ No✅ Yes
Notification emails❌ No✅ Yes
SecurityLink can be sharedSecure token
ExpirationNo✅ 7 days

💰 Time Saved

Before:

  • Each invite: 5 minutes × 3 people = 15 minutes
  • Tracking: 2 minutes × 3 people = 6 minutes
  • Adding members: 1 minute × 3 people = 3 minutes
  • Total: ~24 minutes for 3 people

Now:

  • Invite 3 people: 30 seconds × 3 = 1.5 minutes
  • Automatic tracking: 0 minutes
  • Auto-add: 0 minutes
  • Total: ~1.5 minutes!

Saved: ~22.5 minutes = 94%!

Rules and Limits

📋 Invitation Rules

One Email - One Invitation

Cannot:

  • ❌ Send 2 invitations to same email for same activity
  • ❌ Spam invitations to same person

Allowed:

  • ✅ Send to same email for different activities
  • ✅ Resend old invitation

Already a Member

Cannot:

  • ❌ Invite someone already a member
  • ❌ Invite your own email

Reason: Avoid duplicates, confusion

Activity Must Be Active

Cannot:

  • ❌ Invite to locked activity
  • ❌ Invite to completed activity
  • ❌ Invite to deleted activity

Reason: Data doesn't change, avoid confusion

⏰ Validity Period

7 Days

Rules:

  • Each invitation valid for 7 days
  • Counted from email send time
  • Cannot change validity period

After 7 days:

  • Link expires
  • Status: "Expired"
  • Can resend new invitation

Cancel Invitation

Who can cancel:

  • ✅ Person who sent invitation
  • ✅ Activity owner

When canceling:

  • Invitation changes to "Cancelled"
  • Email cannot be used anymore
  • Invitee cannot accept

Development Roadmap

🚀 Coming Soon

Next version:

  • QR Code: Scan to invite (no email needed)
  • Zalo integration: Invite via Zalo API
  • Email templates: Pre-written invitation templates
  • Auto reminders: Resend after 3 days if no response

📅 Long-term Plans

  • Analytics: Track invitation acceptance rates
  • Referral: Reward for successful sign-ups
  • Group link: One link for multiple activities
  • Batch invite: Import email list from file

Tips for Effective Use

🎯 Writing Great Invitations

Principles

PrincipleExample
Friendly"Hey! We're organizing..."
Clear"Da Lat trip - 2 days 1 night"
Appealing"Amazing destination, join us!"
Call to action"Are you free? Join us!"

Invitation Templates

For trips:

"Hi! We're planning [activity name]. Do you have time to join? Promise an amazing trip! 🎒"

For birthdays:

"This summer we're throwing [name]'s birthday party! There will be cake, games and lots of friends! 🎂"

For shared rent:

"Looking for someone to share [location] apartment. Are you interested? [Name] and I have been here a year, join us!"

📧 Inviting Multiple People at Once

How To Do It

  1. Open invite dialog
  2. Enter first email
  3. Write personal message for each person
  4. Send
  5. Repeat for next person

Tips

  • Keep messages warm but concise
  • Mention your relationship with invitee
  • Highlight what's fun about the activity

📊 Tracking Invitations

Regular Checks

Daily:

  • See who accepted
  • Remind those who haven't responded (resend)

Before activity:

  • Ensure everyone has joined
  • Resend if needed

Handling Special Cases

SituationSolution
Wrong emailCancel old, send new with correct email
Busy inviteeResend later, or cancel
Invitee declinedInvite someone else
Link expiredResend invitation

Conclusion

The Invite Friends via Link & Email feature makes inviting people to join activities simple, professional, and systematic.

🎁 What You Get:

Save time - Send invitations in seconds ✅ Easy tracking - Know who received and who responded ✅ Personal invitations - Write custom messages for each person ✅ Auto emails - System handles sending ✅ Reminders - Invitees won't miss out ✅ Auto-add members - No manual work ✅ Temp users - Friends can participate before registering ✅ Security - Safe token, 7-day validity

🚀 Start Today!

Try inviting friends to your next activity and experience the difference!

Invite your friends to join - no more barriers! 🎯


Have you tried the invite friends feature yet? Share your experience at [email protected] or Discord community!

Share this post if you found it helpful! 🔄

New Feature: Invite Friends via Link & Email - No More Barriers to Group Bill Splitting