Skip to main content

FRUX Series

The FRUX (first-run user experience) notifications series is a 28-day notification series that introduces users to various parts of the Handshake app (e.g. Feed, People search, Profile).

Attribute
Channelsin-app, push
User typesStudents
RegionsNA
Platformsweb, iOS, Android
Product areaOnboarding
Notification preferencegeneral_communications
Notification config/v1/frux_day_10.yml (example)

Audience​

Affiliated Students in the US within their first 28 days on Handshake.

Trigger​

The Day 1 notification is triggered from a GraphQL mutation that is called when a user completes onboarding. After Day 1, this notification is triggered by a DAG that runs daily at 16:00 UTC (9AM PST).

How to test​

Command line​

To send an individual notification:

Notifications::NotificationSendingWorkerV2.new.perform('frux_day_03', '1', {}, 125, SecureRandom.uuid)

E2E​

In order to enter the entire 28-day series:

  1. Create a new affiliated student account on Handshake using the onboarding flow. You should see a Day 1 in-app notification after completing onboarding.1
  2. (If not already on mobile) Log in with the new account on mobile, and enable push notifications.

Additional info​

Implementation​

This notification sends through the push & in-app channels, across web, iOS, and Android. Each day sends to a different combination of channels and platforms, depending on which features are available where. Note that we do not send emails through the frux_day_xx notifications; the similarly themed onboarding emails are handled by the Marketing team through Iterable.

V2 configs are not actively sending as of September 2025; they exist so that Android team has notification configs to test with.

As it currently exists, the FRUX notification series is somewhat custom & hard-coded; meaning: the DAG only works for frux_day_xx notification names, and there's a lot of repetition in the implementation (for example: 16 config files, 11 push templates, 16 in-app templates).

Further ideation​

This type of notification series, one where sends are based on time-since-event (i.e. send immediately after completing onboarding, 1 day after completing onboarding, 3 days after, etc.), feels like a pattern that can be reused for notifications regarding other areas of the product.

Open questions:

  • How can we make the DAG reusable?
  • How can we make this pattern more flexible in general?
  • How can we make the code more DRY?

Aliases​

  • New user notifications
  • Onboarding notifications
  • First-run user experience notifications

Resources​

Footnotes​

  1. As of August 2025, we are still running a 5% holdout, so there is a small chance that your new account may fall into this holdout group. ↩