Switching holding constant in funnel analysis

  • 5 January 2023
  • 9 replies

Hi, I want to build a funnel of how users grow the user base by inviting others and if these new users actually finish any action.



  • User A creates playlist
  • User A invites new user B to playlist
  • (New User B creates an account)
  • New user B plays song in playlist

I can do this by the holding constant of the playlist id, but I would not know if the final play in the playlist is User A, B, or C (should only be user B) in this case.


Best answer by Matrak 5 January 2023, 12:42

View original

9 replies

Userlevel 3
Badge +6


You can try to use the “broken down by step x User ID” funnel option, x being the number of the step where the user B comes in: 

This would supposedly allow you to see the new users from step x, but I am unsure as I have not tried it myself (and if it works, it would be laborious to take notes of all new users’ IDs if there are many, so I do not advise to try this 😂).

One (proper) way to solve this issue would be to track the invitation somehow (with a custom implemented property such as “internal campaign” or “invitation url”… you name it). Then, you can build a funnel holding constant user id in which the user / first event of the funnel will alow to identify the visitor as someone who has been invited by one of your users.

Userlevel 6
Badge +9

Thanks for helping out @Matrak! 😃

Thank you @Matrak! With your suggestion, this would mean I had to pass that property (in this case e.g. the playlist ID) through all the events that lead to the last step of that funnel, right? That might be rather tricky I think 🤔

Userlevel 2
Badge +5

Hi @kornelius , 

@Matrak is on the right track in proposing to add a new event/user property to the events. However, you would need to create 3 new event/user properties: UserInvited, which would return a boolean value to determine if this user was invited or not, InvitationURL, which would contain the URL of the user that invited them to join the playlist, and playlistID, which would let you know if they played a song in the playlist that they joined.


Another possibility would be to create the funnel from the perspective of user A. So an example of the sequence of events would be Create Playlist > Invite User > Invited User creates Account > Invited User plays a song in the playlist. 


Hope this helps! 

Thanks @Yosuke Atsuumi . That is what I intended in the first place, but how would I connect the User A with Invited user plays song?

I have another use case for this, and it would be really great if amplitude would allow something like that:

Very simple:

  • Usas A sends a message to user B (holding constant is the message ID)
  • User B reads the message
  • User B does other events with the message

I cannot look into this because it always starts on the User A and does not include User B in the same funnel. So I cannot tell what my Message recipient read rate is, even though all the data is on the plattform.

Is there a way to file this somewhere?

Userlevel 5
Badge +9

@kornelius happy to file this somewhere, it might be a bit tricky since an event property can only be held constant if you have instrumented it for every event in the funnel. (Which I think you mentioned already would be challenging.) 

Thank you @Esther Trapadoux . Well, the Holding Constant would be there aacross the funnel actually, but in different users!


I would also like to hold constant a value across different users.

User ID: A
User ID: B

User A performs event “send invite” with “invite id” property set to “Z”
User B performs event “join platform” with “invite id” property set to “Z”

If I select “holding constant” “invite id” set to Z, I would want the funnel to show 100% conversion (across the two different users.

This article suggests this is impossible “you opt to hold properties constant, the funnel chart will display the unique count of user and user/event property pairs that have completed the funnel”