impress-org / givewp

GiveWP - The #1 Donation Plugin for WordPress. Easily accept donations and fundraise using your WordPress website.
https://givewp.com/
GNU General Public License v3.0
346 stars 192 forks source link

feat: plan user flow for license activation #2058

Closed DevinWalker closed 5 years ago

DevinWalker commented 7 years ago

Issue Overview

Users are annoyed when they have to activate multiple licenses for their add-ons. Give should have logic to allow admins to activate all their licenses at once with the plugin.

Expected Behavior

The add-on download, install, activation, and licensing process should be as pain free as possible to ensure new customers aren't over-excessively burdened. New All Access Pass Bundle buyers don't have to activate licenses individually but rather gain access to all their add-ons after activating a single license..

Current Behavior

Users have to download each add-on manually from their account on GiveWP or from their email and then manually upload each and activate each license individually. The process is tedious and not a pleasant experience after purchasing one or more add-ons or a bundle.

Proposed Solution

Redesign the licenses page so that the main section has bundle license activation options. Create another section or tab/page with options for individual add-on activation.

User Scenarios

New or Existing Give User with No Premium Add-ons Activated

I am a new Give user who just installed or have been running the free plugin the plugin and may or may not have an add-on installed but no premium add-ons are active.

Acceptance Criteria


Existing Customer with Individual Premium Add-on Licenses Active

I am an existing customer who has several add-ons installed and have updated to Give 2.5.0.

Acceptance Criteria


New All in One Access Pass Bundle Customer

kevinwhoffman commented 7 years ago

I will mock this up but here's what I'm thinking, loosely based on MonsterInsights approach:

  1. User visits Add-ons screen within Give plugin. All add-on cards are visible but locked. There is a single License Key input field above the add-on cards.
  2. User pastes a bundle license key.
  3. Give website determines which individual plugins are included in that bundle and unlocks them within the plugin. The unlocked status is signified by an Install button in the add-on card and a success notice at the top of the screen.
  4. At this point the user is free to install any of the unlocked add-ons. When Install is clicked, the plugin is retrieved from the Give website and installed in a deactivated state.
  5. Once installed, the Install button changes to an Activate button and plugin is ready to be activated.

Screenshots

image

mathetos commented 7 years ago

I like their approach a lot. My only caveat is I'd like the Install/Activate/Deactivate to be much more explicit. It's too subtle in their design.

kevinwhoffman commented 7 years ago

@mathetos I agree. We also might consider sectioning off the unlocked plugins to make that even more obvious which add-ons are available to be installed. So all cards would appear in a grid by default, but then break out the unlocked cards based on license activation.

ravinderk commented 7 years ago

@kevinwhoffman Correct me if I am wrong

  1. Activate: activate addon and enable license
  2. Deactivate: activate addon and disable license

So basically activate and deactivate has addition task ( setup license ) when unlocking addon with bundle key.

kevinwhoffman commented 7 years ago

Enter license key > Unlock Add-ons > Install one or more Add-ons > Activate Add-ons

ravinderk commented 7 years ago

@kevinwhoffman downloading plugin as we discuss over slack and checking it myself

kevinwhoffman commented 7 years ago

The diagram below represents the possible states of an add-on card, beginning in a locked state and ending as an active add-on.

give-addons-licensing

mathetos commented 7 years ago

@kevinwhoffman What's your thought for when it's not a Bundle license key, but a single one?

Also, are you saying that the license keys settings stays where it is, but they then go to Addons in order to download/activate? Seems a little counter-intuitive. I think it would make a lot more sense to keep license key activation and addon activation on the same page if at all possible. I know that would mean a bigger change to the overall UI and settings, but it would definitely be a better user experience if done right.

kevinwhoffman commented 7 years ago

@mathetos I am envisioning one license key box above the add-ons that can accept a bulk license or individual license. If validated, the associated add-on(s) are unlocked. So it is essentially the same process for bulk or individual licenses. That could be clarified in the input's placeholder.

Also, are you saying that the license keys settings stays where it is, but they then go to Addons in order to download/activate?

I agree with you that add-ons and licensing should be on the same page, or at least in tabs under the same menu item.

mathetos commented 6 years ago

In chatting with @DevinWalker today about this concept, I want to enhance the user experience just a little more. Here's the process I envision:

1) At purchase, every single customer regardless of what they bought gets ONE download -- The Give Add-on Manager 2) They install that plugin and at activation it redirects them automatically to the Add-ons screen that would be essentially like what Kevin laid out above. 3) Instead of a license key, they are asked for their GiveWP credentials to authenticate their connection with our site. They received those credentials at the checkout and via email (we would make this more obvious at purchase confirmation as well. 4) Once that authentication is established, the list of Add-ons gets segmented into two sections "Your Add-ons" and "Get more Add-ons". 5) The Add-ons in their section have an "Install and Activate" button that once clicked, it downloads the plugin from our site, installs it and activates it automatically all within the Add-on screen. 6) The "Get more Add-ons" section has a "Upgrade" or "Buy Now" button that directs them to our website.

This removes several major pain-points that our customers often express to us: 1) Downloading plugins one at a time is cumbersome for customers (let alone for Safari users who get an unzipped folder instead of a zip file) 2) Installing manually via "Plugins > Add New" is cumbersome for some users. 3) Finding the right license key for the right add-on is a major pain, particularly if they first bought a single Add-on then later a Bundle, or have multiple licenses for different clients, etc.

A couple notes to keep in mind:

@pippinsplugins -- would love your input on this concept, particularly if you've seen other shops do something similar, how this might impact EDD Licensing in general. This is essentially what I've mentioned to you a few times in the past.

kevinwhoffman commented 6 years ago

I like it, especially as it accounts for future purchases after the initial purchase. Rather than having to add new keys, we can just update the available add-ons by pinging our server and syncing their purchases to the site in question.

What happens if the plugin won't install via the Add-on screen correctly for some reason?

I think we can keep the existing Downloads screen on givewp.com where the plugin zips can be downloaded manually. We just don't need to list all of the license keys alongside every download anymore.

DevinWalker commented 6 years ago

Here's the add-ons page concept using the card concept @kevinwhoffman outline above with some design revamp based on Monster Insights:

add-on page elements

kevinwhoffman commented 6 years ago

image

@DevinWalker Nice, that's pretty close to what I was thinking.

UI Feedback

With the left-aligned card text, it makes sense to align the buttons flush left as well, so the eye has a clear visual pathway down each card. Heading > Description > CTA

UX Feedback

  1. The Upgrade Now button in the top right is a little disconnected from the rest of the page. Since upgrading is a necessary step to use any of the add-ons, users should be funneled through that process more directly. That could be accomplished with the two-button approach outlined below.
  2. We should account for two types of users, each of which requires a different path forward.
    • Users in task-completion mode have already purchased and need to activate plugins.
      • Unlock Now (primary CTA) - Initiates the user login with Give credentials or, if Give credentials are already stored, pings the givewp.com server to validate and unlock the add-on.
    • Users in discovery mode who are first learning about add-ons.
DevinWalker commented 6 years ago

UX Feedback Response

Thanks @kevinwhoffman for the excellent feedback. The concept above is for users for the free plugin only w/ no add-ons installed. If the users has an add-on installed or the future "Add-on Manager" plugin then the UI/UX needs to change accordingly.

More-so:

  1. I like the "Learn more" to balance the button out and provide a useful link to the product page. The "Unlock now" should go to the bundles page.
  2. I agree the "Upgrade Now" button looks a little disconnected at the top. It would be better balanced with another button.

Additionally

  1. For current customers I'd like to detect whether the add-ons are installed w/o the future "Add-ons Manager" plugin and prompt them to install it on this screen and also with a dismissible notice.
  2. I would like to determine the best way to "login" the user to givewp.com to bypass any licensing. A modal would be nice but seems insecure even if the iframe is https (https://security.stackexchange.com/questions/145100/is-a-modal-payment-over-https-secure-if-the-main-page-is-only-http) - therefore perhaps we open a mini-window with a custom login than then sends the necessary info back to the window that opened it. Q1: Is this less reliable than in page redirect and redirect back? Q2: What happens when someone closes the original opened window?
kevinwhoffman commented 6 years ago

I would like to determine the best way to "login" the user to givewp.com...

Here's a possible approach that would not require any sort of redirect to authenticate the purchase:

  1. User purchases add-on/bundle on givewp.com.
  2. At checkout, they provide the domain associated with the license and that domain is stored alongside their account details on givewp.com.
  3. The user visits the Add-ons page inside the plugin and clicks Unlock Now.
  4. The user is asked only to provide the email address (used to purchase the add-on) which is sent as a $_GET request from the plugin to givewp.com. The request checks the provided email address against the Give customer database and confirms that the request came from a valid domain associated with that email.
  5. If the domain is valid and an active license exists, then the add-on is unlocked.
DevinWalker commented 6 years ago

That workflow is nice but I'm not so sure the "no login" approach is better. Initial inquiries:

  1. What happens when it's a multi-site license purchase?
  2. What if the site is still in development and changes domains?
  3. @mathetos really wants to promote the account access due to priority support being unlocked with that access.
mathetos commented 6 years ago

@kevinwhoffman and @DevinWalker I don't want to add additional information for the customer at checkout. I think authenticating the license from within their site is more intuitive for them as a user experience as well, not working within our site and then ALSO working within their site.

kevinwhoffman commented 6 years ago

Wouldn't we still be dealing with multiple license keys for any individual add-ons? Or anyone who upgrades from one add-on to a bundle?

One reason Give is not directly analogous to MonsterInsights is because they only offer bundles and therefore can consolidate everything under a single key. As long as Give offers single add-ons and bundles, we'll have to either choose between account authentication or multiple keys.

kevinwhoffman commented 6 years ago

I've renamed this issue to focus on planning the user flow, since that is primarily what we've discussed so far. This is part of the overall implementation of the new licensing experience in epic #2904.

mathetos commented 6 years ago

@kevinwhoffman said:

As long as Give offers single add-ons and bundles, we'll have to either choose between account authentication or multiple keys.

I don't believe that's true. Account authentication should be able to handle multiple keys no problem since all the keys are attached to the same customer just like single Bundle keys are. We should be able to pull all the keys that are attached to the customer and show which addons are available for activation.

pippinsplugins commented 6 years ago

Another option is a single key provided by an All Access pass. That’s what we, Easy Digital Downloads, have been upgrading our sites to use.

On Tue, Mar 13, 2018 at 11:18 PM Matt Cromwell notifications@github.com wrote:

@kevinwhoffman https://github.com/kevinwhoffman said:

As long as Give offers single add-ons and bundles, we'll have to either choose between account authentication or multiple keys.

I don't believe that's true. Account authentication should be able to handle multiple keys no problem since all the keys are attached to the same customer just like single Bundle keys are. We should be able to pull all the keys that are attached to the customer and show which addons are available for activation.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/WordImpress/Give/issues/2058#issuecomment-372899799, or mute the thread https://github.com/notifications/unsubscribe-auth/AA_HfZ0k0o2AnfI1irv-AX2FagSQLVxeks5teJowgaJpZM4PQqOb .

kevinwhoffman commented 5 years ago

To get this discussion going again, I have reviewed the All Access pass and believe this could be a viable option for improving licensing within Give.

EDD All Access Pass Overview

I recommend going over the materials below to understand how All Access works so you'll better understand how it could work with Give.

Doc: https://docs.easydigitaldownloads.com/article/1757-all-access-overview Overview Video: https://youtu.be/ZJzGool4yPA In-depth Tutorial Video: https://youtu.be/t8ZkzeDasWY

Proposed Integration with Give

  1. Create 3 All Access pass products to match Give's 3 bundles.
    • Basic
    • Plus
    • Pro
  2. Assign Basic, Plus, and Pro categories to each individual add-on to indicate which All Access pass product should have access to it.
    • See https://youtu.be/t8ZkzeDasWY?t=779 for applying download categories in bulk.
    • MailChimp would have Basic, Plus, and Pro categories since it's available in all bundles.
    • Recurring Donations would only have Plus and Pro categories so its not available in Basic bundle.
  3. Set the corresponding category within each All Access pass product to determine which add-ons belong to which pass.
  4. Integrate with EDD Recurring Payments.
  5. Integrate with EDD Software Licensing to sell master licenses.
pippinsplugins commented 5 years ago

That's exactly how we have it set up on our sites and it works quite well.

The biggest hurdle is migrating existing customers from the bundles to the passes. We chose to not automatically migrate anyone and simply manage them on a case-by-case basis at renewal times and through upgrade options.

If there are any questions on how to achieve all of this, I'm happy to help.

mathetos commented 5 years ago

Thanks @pippinsplugins -- how did you handle it at renewal? Are they automatically updated to the all access pass? Or do you interact with them somehow to inform how they renew?

pippinsplugins commented 5 years ago

We did it for manual renewals only.

  1. We disabled renewals on the old products so they could not be purchased again.
  2. We communicate to our customers that to renew they should purchase the new pass options (some were given discounts)
kevinwhoffman commented 5 years ago

@DevinWalker and I were discussing whether our existing bundle keys could be made to work like the all access pass, so that only the bundle key could be entered and all child plugins activated.

However I don't think this is possible after seeing this note in the docs for bundle licensing:

NOTE: Please note that currently, Bundle (or Parent) Licenses are only useful for bulk-changing license expiration dates on the Admin/Seller side. On the customer side, they are only useful for renewals. A Bundle License can be used by the customer for renewing their Bundle purchase.

A Bundle License cannot currently be used to activate "child" products contained in that Bundle. For activating "child" products, customers must use the license key that was generated for that specific product upon purchase.