How to Handle Incomplete Signup Flow with Memberstack and Stripe: Preventing Abandoned User Registrations

Post author
Admin P

Hello, is there a way to set a fall back plan? Example:

  1. A site visitor clicks signup modal data-ms-price:update=prc_paidplan,
  2. They complete the member signup modal, by entering name, email, password.
  3. They reach the stripe payment page, and click the back button
  4. They go back to their initial site page
  5. Memberstack tracks this as a signup member with no plan associated

How are others handling this?

I believe the ideal case, is the user get assigned the 'fallback' plan? as opposed to a null plan
And if set to the 'fallback plan', which in my case is the 'free trial plan', they should be sent to the redirect of the 'free trial plan'. Currently, with a null plan, nothing happens and so the user flow is not great.

Comments

12 comments

  • Comment author
    A J

    Hey Admin P, there are multiple ways to tackle this.

    You can see what fits your use-case more precisely and take that up.

    • You can make use of default redirects in this case (to redirect to the pricing page), in case your site has no use-case for users without a plan. So whatever you set the default redirect for users on login / signup they will be redirected to it when they have no assigned plan. In your case, you can set it to the upgrade page / pricing page etc.
    • You add a free plan to the signup by default (trial plan in your case) and let the trial plan redirects handle the use-case as you mentioned. You can also make use of Plan logic in this case where you can setup a condition that if one plan is assigned to a user remove the other plan. A similar use-case was discussed earlier in this community.
    • If you prefer custom code, you can also add a script to the page the members are redirect to after login. Let me know if you prefer this and I will share some code.

    Additionally to this setup, if you want to handle the abandoned cart use-case, I found these 2 helpful resources as an add-on:

    1. Return to Checkout UI
    2. Abandoned Cart Emails

    Hope this helps. Let me know if you face any issues.

    0
  • Comment author
    Admin P
    I don't believe 1 or 2 solve the issue.
    1. I already have a 'Default Settings' redirct, but this isn't triggered when members 'back out' of a paid plan signup flow.
    2. The visitor is directly signing up to the paid plan, and so a free plan route doesn't make sense.
    For now, I've used custom code to redirect members to the onboard flow, while automatically adding the free plan using custom code. But this is cumbersome as all pages need to run this code.Thanks for you reply! A J
    0
  • Comment author
    A J

    Hmm, that's interesting 🤔
    Ideally the default redirects should work for members with no plans.

    Admin P Just wondering, have you tried adding both your trial plans and the paid plan attribute to your signup? So that the free trial plan gets added by default irrespective of the checkout status, and once when people do go through the checkout the paid plan is added. I haven't tested this use-case personally, but I am guessing if this works, it should save you from adding custom code to the pages.

    0
  • Comment author
    Admin P

    I'm not sure if memberstack allows this functionality.
    data-ms-price:add="PRICE_ID1 PRICE_ID2"

    Would you know? From my initial test it does not

    0
  • Comment author
    A J

    Hmm, we can't add Price IDs next to each other in the same attribute currently.

    What I mean is add trial plan attribute separately and the paid plan attribute separately for the signup button. Although I know we can create members with multiple plans together via dashboard / automation, I am not sure if free plan and paid plan works at a time via attributes, since in my personal a/c I don't have stripe a/c connected to test it for you.

    But I am thinking of an alternative if the above does not work, you can also consider adding just a free plan attribute on signup button. Now the user does not need to know of this plan (as this is just for the back-end purpose for you to know the users who were about to pay but have not paid yet). This free plan redirect can be setup for an upgrade or pay now to access the site kind of page which leads them to the checkout as this will mean its a part of the signup process. If you don't prefer this solution, can you share a preview link or site link where I can test what happens when I sign up and don't checkout?

    0
  • Comment author
    Admin P

    You can't add two attributes with the same name like this:

    data-ms-price:add="PRICE_ID1"
    data-ms-price:add="PRICE_ID2"

    0
  • Comment author
    A J

    Yes that's true, but are you trying to add 2 paid plans? Free plan will probably have a different attribute like data-ms-plan:add instead of the price attribute. Again just brainstorming if this works 🤔

    Also I just tested the paid plan signup without checking out, and from my end default redirects seems to work. For e.g. for a client I had setup default redirect to dashboard, and paid plan redirect to a course page. Now when I signup and abandon the checkout, I don't have a plan assigned to me so by default when I login I am taken to the dashboard as opposed to any gated content / plan specific page.

    This is the simplest solution for making sure that gated content works the way it is setup and members with no plans don't have access to it + are redirected to the page we want them to redirect to.

    Can you share what issue you are facing on the site with default redirects? And how the default redirects are setup and what's not happening? Maybe we can try to fix that to simplify the process

    0
  • Comment author
    Admin P

    In your example, the user flow is disrupted because they need to login.

    Following the steps I have in the original post, there should be a fall back plan, so the user is immediately redirected to the fallback plan

    And if set to the 'fallback plan', which in my case is the 'free trial plan', they should be sent to the redirect of the 'free trial plan'. Currently, with a null plan, nothing happens and so the user flow is not great.

    0
  • Comment author
    A J

    Hmm so you mean to say the flow should be like:

    A user signs up for a paid plan (enters email and password) and when stripe checkout is triggered, if the user clicks back, they need to be redirected to the fallback plan's redirect instead of the signup page they just came from?

    I am guessing currently that's what must be happening 🤔

    0
  • Comment author
    Admin P

    yes exactly!

    0
  • Comment author
    A J

    Got it, this is a very specific use-case so I think we don't have attribute kind of solution for this even if you add a fallback plan, since the user is in the middle of the whole flow.

    So I have a workaround for this via custom code, but you don't need to add this to multiple pages, if you add this to signup page custom code section, that should be more than enough:

    <script> 
    document.addEventListener("DOMContentLoaded", async function () { window.$memberstackDom.getCurrentMember().then((member) => {
    if (member.data) {
    const planConnections = member.data["planConnections"];
    if (planConnections.length < 1) {
    window.location.href = "URL";
    }
    }
    });
    });
    </script>

    replace the "URL" in the code with the actual page link that you might want the user to redirect to in case they hit back button before purchasing the product.

    So when a user is logged in and has no plans assigned, this code will ensure they are redirected to the page you want them to see when they hit the back button from checkout (and try to access the signup page). And if they logout or login back at a later time default redirects that you have setup in the memberstack dashboard would come in the picture and would also help you with the same.

    This should solve our use-case. Hope this helps.

    0
  • Comment author
    Admin P

    Thanks for your comments! This implementation is similar to what I've done, so I'm glad we've came to the same conclusion!

    any other solutions?

    0

Please sign in to leave a comment.