# subscription.updated not dispatched when a scheduled plan change takes effect at renewal

**Project:** Bugs | **Board:** Live | **Votes:** 1
**URL:** https://roadmap.vatly.com/projects/11-bugs/items/13-subscriptionupdated-not-dispatched-when-a-scheduled-plan-change-takes-effect-at-renewal

---

Tested via POST /test-helpers/subscriptions/{id}/fast-forward-renewal with paymentStatus: "paid" on a subscription with a scheduledUpdate pending (downgrade Business → Creator). Result:

order.paid fires correctly, priced on the target plan (Creator, €11.69 incl. tax) — this part works well.
The Subscription resource itself does transition (dashboard History shows "A new billing cycle started" / "Subscription was updated on renewal", plan and nextRenewalAt both updated) — but no subscription.updated (or equivalent) webhook is ever sent.
Confirmed via two independent sources: our local webhook inspector (ngrok) and the dashboard's own Webhook Log — both list the exact same 5 delivery attempts, the last being order.paid, nothing after. subscription.updated is confirmed present in our endpoint's enabledEvents (GET /webhook-endpoints), ruling out a subscription/config issue on our side.

Why it matters: merchants who sync local plan entitlements off subscription.updated (the documented, correct pattern) have no way to know a scheduled plan change actually took effect at renewal — the payment succeeds, but the plan-change event never arrives.

Open question: is this specific to the fast-forward-renewal test helper, or would a real (non-simulated) renewal also skip this webhook?

---

## Comments

**Sander** (2026-10-01T12:50:17+00:00):
Verified, investigating. To answer your open question: it is not specific to the test helper, a real renewal behaves the same way. Thanks for the detailed report.

**Sander** (2026-10-01T22:38:12+00:00):
[@RAHANETRA Jason](/user/rahanetra-jason) Fixed. `subscription.updated` now fires when a scheduled plan change takes effect at renewal — the same public event name as an immediate change, carrying the full old/new plan, price, interval and quantity. This covers a real renewal too, not only the fast-forward test helper. Rolling out to staging now, production on the next promotion. Thanks for the precise report — the two independent sources plus confirming `enabledEvents` made this quick to pin down.

