diff --git a/endpoints/webhooks.py b/endpoints/webhooks.py
index a68d819c7..b5815bf0d 100644
--- a/endpoints/webhooks.py
+++ b/endpoints/webhooks.py
@@ -46,7 +46,23 @@ def stripe_webhook():
cust = model.get_user_or_org_by_customer_id(customer_id)
cust_email = cust.email if cust is not None else 'unknown@domain.com'
quay_username = cust.username if cust is not None else 'unknown'
- send_subscription_change(event_type, customer_id, cust_email, quay_username)
+
+ change_type = ''
+ if event_type.endswith('.deleted'):
+ plan_id = request_data['data']['object']['plan']['id']
+ change_type = 'canceled %s' % plan_id
+ send_subscription_change(change_type, customer_id, cust_email, quay_username)
+ elif event_type.endswith('.created'):
+ plan_id = request_data['data']['object']['plan']['id']
+ change_type = 'subscribed %s' % plan_id
+ send_subscription_change(change_type, customer_id, cust_email, quay_username)
+ elif event_type.endswith('.updated'):
+ if 'previous_attributes' in request_data['data']:
+ if 'plan' in request_data['data']['previous_attributes']:
+ old_plan = request_data['data']['previous_attributes']['plan']['id']
+ new_plan = request_data['data']['object']['plan']['id']
+ change_type = 'switched %s -> %s' % (old_plan, new_plan)
+ send_subscription_change(change_type, customer_id, cust_email, quay_username)
return make_response('Okay')
diff --git a/util/email.py b/util/email.py
index e4e97ebea..14159b325 100644
--- a/util/email.py
+++ b/util/email.py
@@ -35,12 +35,14 @@ not given access. Please disregard this email.
SUBSCRIPTION_CHANGE = """
-Event name: {0}
+Change: {0}
Customer id: {1}
Customer email: {2}
Quay user or org name: {3}
"""
+SUBSCRIPTION_CHANGE_TITLE = 'Subscription Change - {0} {1}'
+
def send_change_email(username, email, token):
msg = Message('Quay.io email change. Please confirm your email.',
@@ -74,9 +76,9 @@ def send_invoice_email(email, contents):
mail.send(msg)
-def send_subscription_change(event_name, customer_id, customer_email, quay_username):
- msg = Message('Quay.io Customer Subscription Change',
- sender='support@quay.io', # Why do I need this?
- recipients=['stripe@quay.io'])
- msg.html = SUBSCRIPTION_CHANGE.format(event_name, customer_id, customer_email, quay_username)
+def send_subscription_change(change_description, customer_id, customer_email, quay_username):
+ title = SUBSCRIPTION_CHANGE_TITLE.format(quay_username, change_description)
+ msg = Message(title, sender='support@quay.io', recipients=['stripe@quay.io'])
+ msg.html = SUBSCRIPTION_CHANGE.format(change_description, customer_id, customer_email,
+ quay_username)
mail.send(msg)