Skip to content

New user invitation

Alex Musayev edited this page Nov 15, 2015 · 9 revisions

The Goal

Provide each existing user an ability to invite new people to join the service.

High-level Requirements

  • An existing User should be able to invite a new User to register an account.
  • A new User should be able to pass an automatic registration procedure, using an invitation code (link) from existing User.
  • The System should periodically reset amount of available invitation codes for each User to a fixed number.
  • If a User didn't spent all invites during a period, overall amount should not grow over this fixed number.
  • The System should track invitations.

User perspective

  • Authenticated users should see a new section in the side bar.
  • This section should contain:
    • A short text telling about availability to invite new people (an excerpt from a detailed blog post, with "Read more" link to the original announcement).
    • A number of currently available invites.
    • A link to the invitation form.
  • After feature launch, invitation section should be positioned on the top of the sidebar to acquire user attention. In a few days it should be moved to a permanent location, below Groups section.

Presumable content and in-page position for the invitation section (for a general idea of scale, there is a blue dotted rectangle, denoting desktop browser viewport for ~13" screen size):

Alt text

Invitation workflow

  • "Invite" link in the sidebar section should follow to the invitation form.
  • Invitation form should be located on a separate page, and contain (1) text input for the email address, and (2) submit button.
  • After the user submit an email address, there should be and explicit notification, saying the invite was sent.
  • The form should prevent accidental repeating submit by disabling submit button after first hit.
  • Form validation:
    • Email should be well-formed (expected behaviour example).
    • Email should be not owned by an existing FreeFeed user, or someone who was already invited (in both cases the User should get clear notification, explaining why the invite can't be sent).
  • After sending an invite, the user should be able to send another one, unless the limit is exceeded.
  • If the limit is exceeded, the form should go to inactive state (the page should still be available).
  • Inactive form should inform user about the exceeded invitation limit.

Invitation form layout for normal and after-submit state:

Alt text

Inactive form state:

Alt text

Invitations history

  • After a User send their first invite, "Invited users" section should appear below the invitation form (this section should not be visible while it's empty).
  • This section should display invitation records in chronological order.
  • Each record should contain the following fields:
    • Invitation date (short format; year should be displayed only if this is not the current year).
    • Email address.
    • Registration status (Pending or Registered).
    • User name for registered ones (linked to the personal feed).
    • "Send again" link for not-accepted invitations.
    • "Recall" link for the case when User change their mind.

Alt text

Recalling an invitation

  • There should be an ability to recall sent invitation. It should be helpful when the email address was incorrect, or the User change their mind for some other reason.
  • There should be confirmation prompt before the System accept recall request.
  • After recall is confirmed:
    • The invitation record should be removed from the "Invited users" list.
    • Amount of available invitations for the User should be increased by 1, unless it is already at maximum.
    • If the person, who was originally addressed with the invitation, tries to register, the System should decline registration with clear explanation of the reason ("Sorry, but @{{username}} has recalled invitation.")

Invitation email

  • After a User submits, the invitation form the System should send an invitation email to specified address.
  • The email should contain:
    • A short information about the service.
    • Invitation sender name.
    • A personalized link to the registration form.
  • The link should include a unique code (e.g. GUID, or something longer), associated with new user email to secure it against leaking, and eliminate the need of email confirmation (the email is already confirmed if the user got the invitation link).

New user registration workflow

  • Invitation link from the email should point to the registration form.
  • The form should contain:
    • Email address field.
    • User name field.
    • Password field.
  • Due to the personalized nature of invitations, the System should already know new user email address. Email field should be already filled.
  • Email field should be read-only. The purpose of including this element to the form is to inform the user, that their email address was accepted, and will be associated with new account.
  • User name field should be validated on client side, according to FreeFeed username format rules.
  • Password field should facilitate the user to define a strong password.
  • The form could be submitted after all fields are filled with valid values.
  • After form is submitted, the System should create a new user account and redirect the user to their home page.
  • If a User tries to open the invitation link again after registration, the System should notify them that the invitation has been already used, and repeating registration is not allowed.

Alt text

--

All images in PDF: https://drive.google.com/file/d/0B2xEgEPnmgLvUms1eXB6UEFmb1k/view?usp=sharing

Clone this wiki locally