Flow to reduce Shopify churn
Background: Send simple one-click email survey to Shopify uninstalled app
- Figure out uninstall reasons
- Flow for users that might want to come back, similar to cancel flow (My account -> Subscriptions -> Cancel) we have on powr.io for Shopify
Overview of mockups - https://www.figma.com/file/dPphu5Kh600nvk4Bq3ZcMx/Shopify-churn?node-id=0%3A1
Scenario: Send email when Shopify user uninstalls (no eng required)
GIVEN a Shopify user with active store (not closed)
WHEN the user downgrades an app from store.myshopify.com/admin/apps
Or uninstalls a paid app
THEN we should send him the following email
Email:
Note: Email will be built in Campaign Builder by marketing, no engineering required
Scenario: Email links should contain info on user’s subscription id, shopify id, shop url (no eng required)
GIVEN a user receives the email
THEN the button links should be of type https://powr.io/subscriptions/:subscription_id/cancellations/:reason
And the links should contain user’s subscription id
Note - links for other buttons:
https://powr.io/subscriptions/:subscription_id/cancellations/expensive
https://powr.io/subscriptions/:subscription_id/cancellations/bad-design
https://powr.io/subscriptions/:subscription_id/cancellations/missing-features
https://powr.io/subscriptions/:subscription_id/cancellations/not-needed
https://powr.io/subscriptions/:subscription_id/cancellations/other
Scenario: Clicking the email link will take users to the respective flow page
GIVEN a user receives the email
WHEN they click on one of the buttons in the email
THEN they should be taken to the respective flow page depending on the button
Eng Notes: \ Create a new controller for cancel feedback \ Create 1 haml page, with sections for each flow and show based on params. \ cancel-feedback/:param
Scenario: When opening any flow page the user’s details should be saved to cancel_feedbacks table
GIVEN the user that received email
AND there is no existing cancel_feedbacks record on the subscription id
WHEN the user opens flow page
THEN a new record is created in cancel_feedbacks table with the respective reason:
id | 55522
reason | "expensive"/”badDesign”/"missingFeatures"/"notNeeded"/"other" (depending on the button clicked)
subscription_type | premium/pro/enterprise
subscription_id | xxxx
details | %textField value% (only for “Other” and “Bad design” flow), blank for others
created_at | now
updated_at | now
cancelled_by |
deleted_at |
source | shopify_churn_survey (new column)
Scenario: When opening any flow page for the first time the user’s details should be saved to cancel_feedbacks table
GIVEN the user that received email
AND there is existing cancel_feedbacks record on the subscription id
WHEN the user opens flow page
THEN record should be updated in cancel_feedbacks table with the respective reason
Scenario: User somehow opened the page without parameters
Given any user
When they open the page without any parameters
Then the page should give 404
Scenario: User clicks on different buttons in email and opens more than one flow
Given any user
When they open 2 or more links from the email
Then the page should save to cancel_feedback only the first option
Note - you can check if it’s from email by the column “source”
Expensive flow
Note - if we don’t know which plugin was used - then use word “plugin”
Flow overview: \
Scenario: Assign a discount to user when they open a page
GIVEN a user on “It’s too expensive” flow
WHEN they open the page
THEN they should be assigned a 50% discount
Name of the discount - 50_off_everything_shopify_cancel
Note: discount to be used - (ensure discount has notification days set to 7) \ Eng notes: Create a user notification with active, discount duration same as that on discount.
Scenario: Link to Shopify app market
GIVEN a user is on the expensive flow page
WHEN they click on Shopify app market link
THEN they should be taken to https://apps.shopify.com/partners/powr-io on a new tab
Bad design flow
Scenario: When user clicks “Submit” save his answer and clear textarea
GIVEN a user on the bad design flow page
AND Text area is not blank
WHEN the user clicks Submit
THEN we update the existing record in cancel_feedback with text from text area saved to “details” column
AND a toast notification appears on the top of the page saying “Thank you for your response”
AND the text area is cleared
Scenario: Submit button is disabled if no text in textarea
GIVEN a user on the bad design flow page
AND Text area is blank
THEN the Submit button is disabled
Missing features flow
Scenario: Write info to cancel feedback and redirect to Zendesk page
Link with parameters: https://help.powr.io/hc/en-us/requests/new?&src=shopify_churn_missing_features&email=...
Pass email, platform, email_subject = “Can't get it to do what I want”, website_url, plugin (if available)
Eng notes: we don’t need to build a page for this, they user will go through the controller, create the db record for cancel feedback and then be redirect to POWr.
Note - the page is built by Zendesk
Not needed flow
Scenario: Show minimarket
GIVEN a user is on “I don’t need it anymore” flow page
Then they should see message and a minimarket below
Other flow
Scenario: When user clicks “Submit” save his answer and clear textarea
GIVEN a user on the other flow page
AND Text area is not blank
WHEN the user clicks Submit
THEN we update the existing record in cancel_feedback with text from text area saved to “details” column
AND a toast notification appears on the top of the page saying “Thank you for your response”
AND text area is cleared
Scenario: Submit button is disabled if no text in textarea
GIVEN a user on the other flow page
AND Text area is blank
THEN the Submit button is disabled