Considerations for ‘Join the Coop’ below the ‘Create your profile’ block:
- some users will visit this block once and not change their relationship with the Coop thereafter
- others will return to the page several times as they modify their relationship
- user and membership information is essentially the same as for listeners, artists and label owners: use a consistent form layout
- minimise the information to be collected and maintained by the coop
- do not set up a corresponding stripe user until it is necessary - i.e. until a financial / KYC relationship is required
- be clear on the distinction between listening for free, paid up listening and membership
- make sure the membership and donation / support offer is prominent and easy to take up
- be clear about privacy… what is asked for and why, permissions to display on profiles
Figma Design Flow
- Start here with sign-up 0.1
- then the emails 0.2 (email confirmation, password reset, welcome email)
- followed by create your profile 0.3 for the first time, and decide if you just want to listen to full length tracks for an hour for free, or get some credits rightaway. You can also decide to join the coop as a listener member or as a label or artist (sets the role and selects the appropriate membership ‘product’ for the checkout
- ‘Next’ at that point takes you straight to the player if you are just listening for free, but if you’re going to buy credits or be a member, you need to go through the checkout - checkout design - configured in stripe - (detail to follow)
- After checkout success, the listener or member can go straight to the player / community or wherever and return to the Update Your Profile (0.41,0.42) page where the profile can be maintained, and additional membership products added. If you are a member, you’ll see your membership details here and any supporter shares you have purchased.
- the ‘profile switcher’ buttons appear at the head of the profile to help navigate the profile detail, like pictures, bios, and other descriptive content mostly needed by the player for good artist ‘persona’ and label content. Listeners only have a single profile. They can use this to create playlists and (optionally) make them public along with any bio information they choose to add.
- Finally, there is a Leaving Resonate (0.43) process to be handled
Products and Pricing
Credit Packs and Memberships are set up as Stripe Products:
Credit packs are priced as follows (both in credit chooser and in stripe product pricing). The more you get, the better the unit value for money:
0.03 Credits - for FREE = 1 hour of exploring
Buy 5 credits for €7 = typically 16 hours of listening
Buy 10 credits for €12 = typically 32 hours of listening
Buy 20 credits for €22 = typically 64 hours of listening
Buy 50 credits for €50 = typically 128 hours of listening
(Projections are based on historical analysis (90k plays) at an average cost of €0.026 per play and a track duration of 4 minutes on average. 1.022 credits = €1.25 = price of typical old skool download.)
Donations …can wait until we have build a separate fundraising page:
We decided that we should keep these signup flow pages focused on selling listening credit and membership . Donations and fundraising can be given a separate page, offering different methods, including the use of open collective as well as collection via stripe checkout and in future, Resonate merchandise products.
Key to tables:
Attribute: the attribute name associated with an object in one of the API’s or a ‘local’ variable(v_)
obj: the API object (or endpoint) concerned: UU = user in UserAPI; SU = user in Stripe API aka customer object; SM = Stripe User [Metadata]; SP = product in Stripe API (Stripe API reference – Metadata)
FieldName: What we call the field on the UI
Action / Display: the expected behaviour for the attribute … e.g. display only? if create/update, what syntax/logical/relational checks are made.
Prompt: Brief UI message (if necessary)
Help Text: Could be revealed by click or ‘hover text’
Link: To guidance / faq entries …on public forum? Or in website for better change control?
0.3 CREATE YOUR PROFILE - land on this page after clicking the verify email link (or other (future) ID verification step)
Select at top of page (toggle button for I’m an Artist / Label or similar) selection - this will have a small effect on the fields displayed and behaviours below. Artists are able to have multiple display profile ‘personas’ linked to one account.
Block Title: Create your profile
Attribute | obj | FieldName | Action / Display | Prompt | Help Text | Link |
---|---|---|---|---|---|---|
username | UU | User Name | create unique username (mandatory, validate) | Choose a user name | This is your unique ‘handle’ across Resonate. It’s not public unless you choose to display a public profile. | ??? |
UU | display, no update | If you need to change your username password go to… | ??? | |||
country | UU | Country | Select Two-letter country code (ISO 3166-1 alpha-2) Mandatory | Code picker | We need to know your country to pay music rights correctly | ??? |
newsletterNotification | UU | Newsletter? | Boolean select | Default Y | OK for us to contact you by email? | ??? |
Block on Listening and Membership (no title - keep the page clean and reduce text)
Attribute | Action / Display | Prompt | Help Text | Link |
---|---|---|---|---|
v_credits | GetCreditsNow? dropdown select amount | See chooser value text options | The more you get, the better the value! | Link to 'What are credits" or “Our Pricing / Stream2Own” in Handbook. On player, after free plays expire, offer a link to page 0.4 at end of each 45 sec sample play. |
v_member_bool | Membership select checkbox? | Become a Member for €x / year (if Listener) Become Member for free if you upload your music (If Artist/Label) | Benefits of membership: * join the community * have your say and vote * special offers, events and a share in profits | Link to Terms and Conditions and membership pages |
n/a - section break only | Support (block heading) | Support Us! | We need your support to build our platform and community | |
v_sshares | Supporter Shares (only shown if Membership selected) enter number of €1 shares (integer 0- 100000) | We pay interest and redeem if we make enough of a surplus one day! | Please pay on the checkout page | Link to Terms and Conditions |
Name and Address:
Collected by Stripe-hosted checkout and held securely by Stripe on our behalf for memberships (even if the membership is offered ‘free’ for artists) and for payment purposes. A privacy message should be displayed here: “This information is held only for legal, payment and statistical purposes and will not be disclosed or appear on any public profile in our (eco-)system without your permission”
Attribute | obj | FieldName | Action / Display | Prompt | Help Text | Link |
---|---|---|---|---|---|---|
firstName | UU | First Name | Mandatory | Your given name | ||
lastName | UU | Last Name | Mandatory | Your family name | ||
fullName | UU | Full Name | Mandatory (defaults to firstName+" "+lastName) | How you would like us to write your full name | ||
address.line1 | SU | Address Line 1 | Mandatory | Number, Street, PO Box | ||
address.line2 | SU | Address Line 2 | Optional | Apartment, suite, unit, or building | ||
address.city | SU | City | Mandatory | City, district, suburb, town, or village. | ||
address.postal_code | SU | Postal Code | Mandatory | ZIP or postal code | ||
address.state | SU | Region | Optional | State, county, province, or region |
Community Forum Profile:
There is a separate user profile in the Discourse forum and some of the profile user data will be carried forward to it from the user API and any profile created in 0.3. The profile input prompt in Discourse must make it clear that the community profile and the player profile / bio information are different and that the user maintains both. Username and email address may only be changed on 0.4, not in Discourse. The handbook link should make this clear. “Only your username and email will be used to create an account in our Resonate Community Forum” by default this will remain private (viewable only by administrators) until you choose to make it public by visiting forum and updating it. Learn more about our Community Forum (link)"
Block Title: ‘Next’ Button
Submission Redirection depends on user selection:
Nothing purchased → Go directly to player
Something purchased (credits or membership product) → Go to stripe hosted checkout with each purchase as line item. Users real name, address and credit card details taken by Stripe.
We need to check that the stripe hosted checkout create customer action works similarly to a Stripe API POST: Stripe API reference – Create a customer) posting the SU attribute data captured above, plus SM metadata. In addition, the fullName and the username should be inserted as metadata fields in the Stripe customer object metadata with corresponding values.
Note that the checkout process determines which membership ‘product’ (currently listener membership or artist membership) has been acquired. In the checkout process, for simplicity, we are presenting these as mutually exclusive options, but technically the rulebook allows a user to be both. In the 'Update Your Profile screens we can allow Listeners to become artists and add an artist membership ‘product’ to their profile, or artists to ‘revert’ to Listeners if they have not made a qualifying contribution (music uploaded for at least one artist profile they own).
We need to trap any unexpected errors and write errors to an error log. (We need to ensure failed mappings between Resonate users and the stripe customer are resolved quickly.)
Redirect to Stripe checkout. After stripe success message, go straight to player, or back to page 0.4 ‘Update your profile’ if there has been a problem / process has been abandoned.
0.4 PROFILE UPDATE - 2 main states after initial onboarding flow - non-member (0.41) vs member (0.42)
0.41 Update your profile (not yet a member)
Hi username / email / (country)
You have n credits left ( = max m hours listening) (display value) (currently retrieved from Tracks Api)
Credit Chooser:
This is similar to the block on 0.3, except that it assumes the user has already seen the chooser and made a selection of credit. The remaining credit (and approximate listening time) is shown alongside the credit chooser. This is therefore a selection of additional credit and the minimum selection is “No thanks, I’ve got enough for now.”
Block Title: ‘Update’ Button(s)
Submission Redirection depends on user selection:
Nothing purchased and no Stripe user → Redirect to player
Nothing purchased and Stripe user exists → Redirect to Stripe checkout user fields update only… only necessary for artists / labels who need to update their street address for payment purposes.
Purchases → Redirect to Stripe checkout user fields and payment.
Newsletter Y/N (UU: newsletterNotification)
Leaving Resonate? (link to 0.43)
0.42 Update your profile (member)
Hi username / email
You are a Listener / Artist Member (current membership)
Membership began / ends. Renew Now… memberships listed in a table:
Attribute | obj | FieldName | Action / Display |
---|---|---|---|
Role | UU | Role | [if Role = user, display ‘Listener’] |
current_period_start | SP | Start_Date | |
current_period_end | SP | Until | |
[If Role = User]price{object} [else] metadata{trackid} | SP | Contribution | [either the Listener’s payment or ‘yes’ if a qualifying trackid is present. If not, ‘Pending’ is displayed] |
You have n credits left ( = max m hours listening) (display value) (currently retrieved from Tracks Api)
Block: Get some more credits now:
Attribute | Action / Display | Prompt | Help Text | Link |
---|---|---|---|---|
v_credits | GetCreditsNow? dropdown select amount | Get some more credits now €x (=$) = up to <chooservalue/.0025> hours | We will add this to your balance |
Get membership shares from Stripe API for this member (retrieve product supporter shares); If NO membership shares show:
Attribute | obj | FieldName | Action / Display |
---|---|---|---|
n/a - section break only | Support (block heading) | Support Us! | We need your support to build our platform and community |
v_sshares | Supporter Shares - enter number of €1 shares (integer 0- 100000 max) | We pay interest and redeem if we make enough of a surplus one day! | Please pay on the checkout page - Link to Terms and Conditions |
If previous purchases of shares found, list in table format:
Attribute | obj | FieldName | Action / Display | Prompt | Help Text | Link |
---|---|---|---|---|---|---|
shares_date | SP | Date | Display DD/MM/YYYY column 1 | |||
shares_amount | SP | Amount € | integer € column 2 | |||
Total | Total | Calculate sum of shares (total row) | ||||
v_sshares | Add | Add more! - enter number of €1 shares (integer 0- (100000- Total)max | We pay interest and redeem if we make enough of a surplus one day! | Please pay on the checkout page | Link to Terms and Conditions |
Block Title: More About YOU (Optional - post-signup) - for a later epic.
Attribute | obj | FieldName | Action / Display | Prompt | Help Text | Link |
---|---|---|---|---|---|---|
hear_about | SM | How did you hear about us? | Optional: Dropdown of sources: Friend, Social Media, Press Article, Newsletter, Blog, Website, Other | Choose main one | ||
hear_about_other | SM | Optional appears only if ‘Other’ selected for hear_about | Please Specify: | |||
volunteer_bool | SM | Volunteer? | Optional: Default N. | Are you interested in volunteering for Resonate? | If you say Yes we may contact you using your email address. | About volunteering - forum link |
skills_offered | SM | Skills offered? | Optional: Dropdown of skills: Music Curation and Catalogue Management, Community Management and Moderation, Software Development, Accounting/Business Administration, Marketing/PR, Other | Choose all applicable | What are the skills that you can offer? Select all that apply | |
skills_offered_other | SM | Optional appears only if ‘Other’ selected for skills_offered 35 characters max? | Please Specify: |
Newsletter Y/N (UU: newsletterNotification)
Leaving Resonate? (link to 0.43)
Role and Profile Change Logic
Notes on changing from artist → label, label → artist, label/artist → listener:
Scenario
The user will be returning to update their profile as a member - a listener, artist or label (Role = user, artist, label respectively) the relevant title button will be shown selected so that the user knows their role at the outset.
0,1 Profiles Exist
If no profiles, or only a single user profile (usergroup) exists, the possibility to switch from label to artist, or artist to label will be offered and the Role will simply be changed on Update. The previously created order-line-item can remain and need not change. If going back to Listener, the previously created artist/label order-line-item will be DELETED (stripe API called), and on update, a Listener membership will be created, together with a request for payment in the checkout.
2-n Profiles Exist
If multiple profiles (usergroups) exist and you are an artist, it is possible to change role to label. An ‘Are you sure?’ message should be displayed with a link to the handbook ‘About labels and Artists on Resonate’. If the user is a label, with existing ‘child’ artist profiles, the option to switch back to an artist should be accompanied with a message ‘Are you sure?’ Your (parent) label profile will be deleted’. The profile (usergroup) of the label will be deleted, but the artist profiles(usergroups) under it will be retained an linked to the user as artist ‘alias’ profiles’. If the user no longer has the right to represent any of those profiles as artists, the user MUST delete the profiles they do not represent and the corresponding music must be taken down from the player. Provide a link to guidance in the handbook.
The ‘become a member’ checkbox is replaced by a ‘You are a member’ message. Note that artists and labels have membership by pledging (in t’s and c’s) to upload music… if they do not honour this pledge (reminders sent) they will be asked to convert their membership to a Listener membership and pay the subscription - invoice sent, artist profiles (usergroups) deleted.
0.43 Leaving Resonate
are you sure?
Why are you leaving?
Can we keep in touch? (newsletter etc) N - delete my data
You have x credits / earnings on account. We can refund you for amounts greater than €10
Artists / labels - contact us about removing tracks.