diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c
index dc7f5ed9e67e9ee9748717e8ccc33a60f2934430..bde7075dd965cfa63f0fe77d4590fdb370bc2ec5 100644
--- a/res/res_pjsip_pubsub.c
+++ b/res/res_pjsip_pubsub.c
@@ -1254,7 +1254,6 @@ static struct sip_subscription_tree *allocate_subscription_tree(struct ast_sip_e
 	sub_tree->endpoint = ao2_bump(endpoint);
 	sub_tree->notify_sched_id = -1;
 
-	add_subscription(sub_tree);
 	return sub_tree;
 }
 
@@ -1328,6 +1327,8 @@ static struct sip_subscription_tree *create_subscription_tree(const struct ast_s
 		sub_tree->is_list = 1;
 	}
 
+	add_subscription(sub_tree);
+
 	return sub_tree;
 }
 
@@ -1616,6 +1617,8 @@ struct ast_sip_subscription *ast_sip_create_subscription(const struct ast_sip_su
 		return NULL;
 	}
 
+	add_subscription(sub_tree);
+
 	return sub;
 }