The community invitation system allows community moderators and administrators to invite users to join their communities. This feature provides a controlled way to grow community membership by extending personalized invitations to specific users.

User Invitation Management

View, accept, or decline community invitations

Moderator Controls

Send invitations and track invitation status

Network Settings

Configure automatic vs. acceptance-based membership

Invitation Tracking

Monitor invitation status and responses

Key Features

  • Network-Level Controls: Configure automatic or acceptance-based membership
  • User Consent: Allow users to accept or decline invitations
  • Moderator Tools: Send and track invitations efficiently
  • Status Tracking: Monitor invitation lifecycle and responses
  • Bulk Operations: Invite multiple users simultaneously

Network-Level Membership Settings

Your network can be configured with different membership acceptance modes that affect how invitations work:
SettingDescriptionUser Action
Automatic MembershipInvited users become members immediatelyNone required
Invitation AcceptanceUsers must explicitly accept invitationsAccept/decline required
let socialSetting = client.getSocialSettings()
if let membershipAcceptance = socialSetting?.membershipAcceptance {
    switch membershipAcceptance {
    case .automatic:
        print("Membership acceptance is automatic.")
    case .invitation:
        print("Membership acceptance requires invitation.")
    @unknown default:
        print("Unknown membership acceptance setting.")
    }
}

Invitation Types

Direct Invitation

Immediate membership: User becomes a member instantly when invited (automatic membership mode)
  • No user action required
  • Notification sent to user
  • Instant community access

Invitation with Acceptance

User consent required: User must accept the invitation to join (invitation acceptance mode)
  • Pending status until response
  • User control over membership
  • Confirmation notifications

Invitation Process

When using invitation acceptance mode:
1

Step 1

Send Invitation: Moderator sends invitation to specific user
2

Step 2

User Notification: User receives invitation notification
3

Step 3

User Decision: User can accept or decline the invitation
4

Step 4

Membership Activation: Upon acceptance, user becomes community member
5

Step 5

Confirmation: Both parties receive confirmation of membership

Managing Invitations

For Users

Get My Community Invitations

The getMyCommunityInvitations function allows users to retrieve all their pending community invitations. This helps users see which communities they’ve been invited to join and manage their invitation responses.
var token: AmityNotificationToken?
let repository = AmityInvitationRepository(client: client)
token = repository.getMyCommunityInvitations().observe({ collection, change, error in
    // Observe changes in the collection
})

Check Community Invitation Status

This function retrieves the current status of a community invitation. It helps users understand if their invitation is still pending, has been accepted, rejected, or canceled. Status Values
StatusDescriptionUser Action
pendingInvitation awaiting user responseCan accept or decline
acceptedUser has accepted the invitationMember of community
rejectedUser has declined the invitationNo further action
cancelledModerator cancelled the invitationNo longer valid
if let invitation = await community.getInvitation() {
    switch invitation.status {
    case .pending:
        print("Invitation is pending.")
    case .approved:
        print("Invitation is approved.")
    case .rejected:
        print("Invitation is rejected.")
    case .canceled:
        print("Invitation is canceled.")
    @unknown default:
        print("Unknown invitation status.")
    }
}

Accept Invitation

The acceptInvitation function allows users to accept pending community invitations. This function is only relevant when the network is configured for invitation acceptance mode.
if let invitation = await community.getInvitation() {
    do {
        try await invitation.accept()
        print("Invitation accepted successfully.")
    } catch {
        print("Failed to accept invitation: \(error.localizedDescription)")
    }
}

Decline Invitation

The declineInvitation function allows users to decline pending community invitations.
if let invitation = await community.getInvitation() {
    do {
        try await invitation.reject()
        print("Invitation declined successfully.")
    } catch {
        print("Failed to decline invitation: \(error.localizedDescription)")
    }
}

For Moderators

Send Invitation

Moderators can send invitations to users to join the community. This function supports inviting multiple users simultaneously. Parameters
ParameterTypeRequiredDescription
userIdsstring[]YesArray of user IDs to invite
communityIdstringYesID of the community
Permissions Required
  • Moderator or Administrator role in the community
  • Community must allow invitations
Validation Rules
  • User IDs must be valid and active
  • Users cannot already be members
  • Maximum invitation limit per request may apply
do {
    try await community.createInvitations(["<user_id_1>", "<user_id_2>", "<user_id_3>"])
    print("Invitations created successfully.")
} catch {
    print("Failed to create invitations: \(error.localizedDescription)")
}

Get Sent Invitations

Moderators can view all invitations they’ve sent to track invitation status and manage pending requests.
var token: AmityNotificationToken!
token = community.getMemberInvitations().observe({ collection, change, error in
    // Observe changes in the collection
})

Best Practices

For Users

Review Invitations Regularly

  • Check pending invitations frequently
  • Review community details before accepting
  • Decline unwanted invitations promptly

Understand Community Context

  • Read community description and rules
  • Check member count and activity
  • Consider community relevance to interests

For Moderators

Strategic Invitations

  • Invite users who match community interests
  • Consider user activity and engagement levels
  • Maintain quality over quantity

Track and Follow Up

  • Monitor invitation acceptance rates
  • Follow up on declined invitations if appropriate
  • Analyze invitation patterns for optimization

Common Use Cases