diff --git a/scripts/analytics/stripeSubscribers.js b/scripts/analytics/stripeSubscribers.js new file mode 100644 index 000000000..6807e8ccf --- /dev/null +++ b/scripts/analytics/stripeSubscribers.js @@ -0,0 +1,46 @@ +// Find latest Stripe basic subscribers who haven't cancelled + +if (process.argv.length !== 3) { + console.log("Usage: node <script> <API key>"); + process.exit(); +} + +var apiKey = process.argv[2]; +var stripe = require("stripe")(apiKey); + +var yesterday = new Date(); +yesterday.setUTCDate(yesterday.getUTCDate() - 1); + +stripe.customers.list({ limit: 40 }, function(err, customers) { + // asynchronously called + for (var i = 0; i < customers.data.length; i++) { + var customer = customers.data[i]; + var created = new Date(customer.created * 1000); + // console.log(created, yesterday); + // if (created > yesterday) continue; + + if (customer.subscriptions && customer.subscriptions.data.length > 0) { + var basic = false; + // console.log(customer.id + " " + created.toISOString() + " " + customer.email); + for (var j = 0;j < customer.subscriptions.data.length; j++) { + var subscription = customer.subscriptions.data[j]; + // console.log(subscription.id + " " + subscription.plan.id + " " + subscription.cancel_at_period_end); + if (subscription.plan.id === 'basic') { + if (subscription.cancel_at_period_end === false) { + basic = true; + break; + } + // else { + // console.log("CANCELLED", customer.id); + // } + } + } + if (basic) { + console.log(created.toISOString(), customer.email); + } + // else { + // console.log("NO SUB", customer.id); + // } + } + } +});