Why do Outlook triggers deployed via Connect stop working and fail to renew, creating errors in Graph subscription?

This topic was automatically generated from Slack. You can find the original thread here.

Outlook triggers deployed via Connect die silently: Graph subscription renewal 404s and never re-creates the subscription

We use Pipedream Connect to deploy microsoft_outlook-new-email triggers (v0.1.19) on behalf of our end users.
What we’re seeing: A deployed trigger received events normally until Jul 15, 2026 ~19:02 UTC, then went quiet. The component’s built-in webhook renewal timer (every 2 days, since Graph subscriptions expire in ~3 days) keeps firing, but every run since then fails the same way:

2026-07-17T08:18 and 2026-07-19T08:18 (UTC): db.get hookId => "<hook-id>" followed by Error: The object was not found.
Our read: the stored Graph subscription no longer exists on Microsoft’s side, so the renewal call 404s. The source just throws and retries the same doomed renewal every 2 days. It never falls back to creating a fresh subscription, so the trigger is permanently dead while still reporting active: true via the Connect API, and nothing surfaces to us programmatically.
Questions:

  1. Is this a known issue with the microsoft_outlook sources?
  2. Shouldn’t the renewal handler treat a 404 as “subscription gone, re-create and store the new hookId” instead of failing forever?
  3. Is there a recommended way to detect dead triggers via the Connect API today? We have ~26 Outlook email triggers deployed for users in this project and need them to self-heal.
    Happy to share more trigger IDs and full logs.

cc:

We traced it in the component source. In components/microsoft_outlook/sources/common/common.mjs, the timer branch of run() calls renewHook() (a bare PATCH /subscriptions/{hookId}) with no error handling, and activate() only runs on deploy. Subscriptions are created with expiry = now + 2.5 days but renewed every 2 days, so there’s only a 12-hour margin. If one renewal fails for any transient reason, the subscription expires, Microsoft deletes it, and every subsequent renewal throws GraphError “The object was not found” (404) forever. The source never re-creates the subscription and still reports active: true via the Connect API. Suggested fix: catch the 404 in the renewal path and fall back to createHook + storing the new hookId, and ideally widen the renewal margin. This affects all microsoft_outlook webhook sources, not just new-email.