diff --git a/src/applications/phortune/product/PhortuneSubscriptionProduct.php b/src/applications/phortune/product/PhortuneSubscriptionProduct.php
--- a/src/applications/phortune/product/PhortuneSubscriptionProduct.php
+++ b/src/applications/phortune/product/PhortuneSubscriptionProduct.php
@@ -50,8 +50,9 @@
   public function didPurchaseProduct(
     PhortuneProduct $product,
     PhortunePurchase $purchase) {
-    // TODO: Callback the subscription.
-    return;
+    return $this->getSubscription()->didPurchaseProduct(
+      $product,
+      $purchase);
   }
 
   public function didRefundProduct(
diff --git a/src/applications/phortune/storage/PhortuneSubscription.php b/src/applications/phortune/storage/PhortuneSubscription.php
--- a/src/applications/phortune/storage/PhortuneSubscription.php
+++ b/src/applications/phortune/storage/PhortuneSubscription.php
@@ -232,6 +232,15 @@
       $purchase);
   }
 
+  public function didPurchaseProduct(
+    PhortuneProduct $product,
+    PhortunePurchase $purchase) {
+    return $this->getImplementation()->didPurchaseProduct(
+      $this,
+      $product,
+      $purchase);
+  }
+
 
 /* -(  PhabricatorPolicyInterface  )----------------------------------------- */
 
diff --git a/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php b/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php
--- a/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php
+++ b/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php
@@ -48,4 +48,12 @@
     PhortunePurchase $purchase) {
     return null;
   }
+
+  public function didPurchaseProduct(
+    PhortuneSubscription $subscription,
+    PhortuneProduct $product,
+    PhortunePurchase $purchase) {
+    return null;
+  }
+
 }