Get Started with Firebase Invites for Unity

To write your cross-platform Firebase Invites client app with Unity, use the Firebase Invites API.

Before you begin

Before you can use Firebase Invites, you need to:

  • Register your Unity project and configure it to use Firebase.

    • If your Unity project already uses Firebase, then it's already registered and configured for Firebase.

    • If you don't have a Unity project, you can download a sample app.

  • Add the Firebase Unity SDK (specifically, FirebaseInvites.unitypackage) to your Unity project.

Note that adding Firebase to your Unity project involves tasks both in the Firebase console and in your open Unity project (for example, you download Firebase config files from the console, then move them into your Unity project).

Sending invitations

Configure the invitation

Create a new Invite object to configure the invitation:

var invite = new Firebase.Invites.Invite() {
    TitleText = "Invites Test App",
    MessageText = "Please try my app! It's awesome.",
    CallToActionText = "Download it for FREE",
    DeepLinkUrl = ""

See here for the full list of invitation settings.

For more information on customizing invitations, see Firebase Invites: Best Practices.

Send the invitation

When you are ready to display the invitation, call SendInviteAsync():


This displays the Invites client UI, allowing the user to choose the recipients and modify the message if desired. This UI persists on the screen until the user chooses to either send the invitation or cancel.

SendInviteAsync() returns immediately and displays the UI asynchronously. It returns its results via a System.Threading.Tasks.Task, which you can query to find out whether the invitation was sent and determine when the UI is no longer on screen, or you can use its ContinueWith method to trigger code automatically when it completes.

Here is an example of sending an invite, and reading the results:

public void SendInvite() {
  Debug.Log("Sending an invitation...");
  var invite = new Firebase.Invites.Invite() {
    TitleText = "Invites Test App",
    MessageText = "Please try my app! It's awesome.",
    CallToActionText = "Download it for FREE",
    DeepLinkUrl = ""

void HandleSentInvite(Task< Firebase.Invites.SendInviteResult > sendTask) {
  if (sendTask.IsCanceled) {
    Debug.Log("Invitation canceled.");
  } else if (sendTask.IsFaulted) {
    Debug.Log("Invitation encountered an error:");
  } else if (sendTask.IsCompleted) {
    int inviteCount = (new List(sendTask.Result.InvitationIds)).Count;
    Debug.Log("SendInvite: " + inviteCount + " invites sent successfully.");
    foreach (string id in sendTask.Result.InvitationIds) {
      Debug.Log("SendInvite: Invite code: " + id);

Cross-platform invitations

If your project in the Firebase console contains exactly one application for each platform, Firebase Invites automatically associates the applications with each other, so that (for example) iOS users clicking on an invitation sent by an Android user are sent to the right place to install your app on their platform.

If you have more than one application on each platform, you can set AndroidPlatformClientId or IOSPlatformClientId, passing in the Firebase client ID of the application on the alternate platform.

Receiving invitations

When a user receives an invitation, if the user has not yet installed the app, they can choose to install the app from their platform's app store.

Then, after the app is installed, or if the app was already installed, the app starts and receives the URL to its content, if you sent one. The app also receives the invitation ID, which matches the invitation ID on the sending side.

Register for receiving incoming invitation

To check for invites, you need to register for the InviteReceived event.

void Start() {
    Firebase.Invites.FirebaseInvites.InviteReceived += OnInviteReceived;
    Firebase.Invites.FirebaseInvites.InviteNotReceived += OnInviteNotReceived;
    Firebase.Invites.FirebaseInvites.ErrorReceived += OnErrorReceived;

void OnInviteReceived(object sender,
                      Firebase.Invites.InviteReceivedEventArgs e) {
  if (e.InvitationId != "") {
    Debug.Log("Invite received: Invitation ID: " + e.InvitationId);
  if (e.DeepLink.ToString() != "") {
    Debug.Log("Invite received: Deep Link: " + e.DeepLink);

void OnInviteNotReceived(object sender, System.EventArgs e) {
  Debug.Log("No Invite or Deep Link received on start up");

void OnErrorReceived(object sender,
                     Firebase.Invites.InviteErrorReceivedEventArgs e) {
  Debug.LogError("Error occurred received the invite: " + e.ErrorMessage);