Skip to content

Instantly share code, notes, and snippets.

SaaS product with monthly/annual plans, <500 customers, experiencing 30-40% churn. Root causes are unknown — could be onboarding/activation failure, value delivery issues, involuntary payment failures, or a mix. Need data-driven answers and ongoing visibility.

Goal

  1. One-time root cause analysis — identify what's actually driving churn using data from Stripe, ActiveCampaign, and GA/Meta.
  2. Ongoing monitoring dashboard — Streamlit app that continuously tracks churn metrics and risk signals.

Data Sources

Stripe (primary)

@arichazan
arichazan / issue-status.md
Last active May 2, 2026 03:20
actorio-webapp issue status

Issue Status Report — 2026-05-02 05:20

Issue # PR # Description Label Assignee Branch PR Status Last Modified Notes
#145 #147 New Signup - Classic bug arichazan issue145-classic-activation-login Ready for Review
#148 #150 New Signup - Signup bug arichazan issue148-existing-email-error Ready for Review
#134 N/A Hide unsupported notification channels bug arichazan ❓ Not triaged Problem The notification dashboard currently displays channels that are not supported, such as SMS.

Closed Issues

@arichazan
arichazan / issue-status.md
Created March 26, 2026 10:08
actorio-webapp issue status

Issue Status Report — 2026-03-26 11:07

Issue # PR # Description Label Assignee Branch PR Status
#46 N/A review all i18n translations bug arichazan
#45 N/A Simplify alert setup: remove enhancement arichazan
#44 N/A "store" label should be invalid arichazan
#43 N/A validate EAN field bug arichazan
#39 N/A allow multiple stores selection enhancement arichazan
#38 N/A check email address validity bug arichazan
@arichazan
arichazan / getTrasactionDetailsResponse.txt
Last active October 2, 2015 15:57
get transaction details response.
$PmTransactionDetails =
(
[ADDRESSOWNER] => PayPal
[ADDRESSSTATUS] => None
[TIMESTAMP] => 2015%2d10%2d02T15%3a45%3a06Z
[CORRELATIONID] => 57cf422dcb0c9
[ACK] => Failure
[VERSION] => 93
[BUILD] => 000000
[L_ERRORCODE0] => 10007
@arichazan
arichazan / gist:7adfb3e3afe669f2ef19
Created October 2, 2015 13:58
Get Express Checkout Details
[TOKEN] => EC%2d5W759829EK6932643
[BILLINGAGREEMENTACCEPTEDSTATUS] => 0
[CHECKOUTSTATUS] => PaymentActionCompleted
[TIMESTAMP] => 2015%2d10%2d02T13%3a39%3a58Z
[CORRELATIONID] => 7a42d93ff408b
[ACK] => Success
[VERSION] => 93
[BUILD] => 000000
[EMAIL] => ari%2bpaypalBuyer%40vreasy%2ecom
[PAYERID] => 2GWBFRVNH5HPU
@arichazan
arichazan / gist:11b579c873e4a043c88d
Last active September 8, 2015 10:25
doesPaymentMatchOptions
/*
* tests whether payment matches options
*
* returns 'true' if matches, 'false' otherwise
*
* $opts is an array of options to filter the payments by
* possible values are
* 'withoutPrefix' => 'prefix' - only select payment without this prefix
* 'withPrefix' => 'prefix' - only select payment with this prefix
* if no options are provided, always returns 'true'