Microsoft Outlook Trigger — "Default folder AllItems not found" error

Hi everyone,

I’m using the Microsoft Outlook Trigger node on a self-hosted n8n instance (Hostinger VPS) and I keep getting this error when clicking “Fetch Test Event”:

“The resource you are requesting could not be found. The specified object was not found in the store., Default folder AllItems not found.”

My setup:

  • Node: Microsoft Outlook Trigger

  • Mode: Poll — Every Minute

  • Trigger On: Message Received

  • Credentials: Microsoft Outlook account (OAuth2, single-tenant Azure app)

  • n8n self-hosted on a Hostinger VPS

What I’ve already tried:

  • Reconfigured the Azure OAuth app with the correct Tenant ID (replaced /common endpoint)

  • Verified the credentials connect successfully

Has anyone encountered this? Is it a missing permission on the Azure app (Mail.Read scope?), a bug with the AllItems folder mapping, or something else?

Any help appreciated!

Welcome to the n8n community @Romain_De_Bels
I’d first try using an explicit folder like Inbox instead of relying on AllItems, and also confirm the credential is pointing to the primary mailbox unless you intentionally enabled Use Shared Inbox. If this is a shared mailbox, I’d double-check that setting plus the UPN. I’d also verify the app has mail-read permissions (Mail.ReadBasic, Mail.Read, or Mail.ReadWrite), but the error itself sounds more folder-specific than auth-specific.

@Romain_De_Bels skip the Outlook Trigger node, AllItems is a known headache with single-tenant Azure apps. just poll the Graph API directly with HTTP Request, way more reliable and you avoid the folder mapping bug entirely.

plug your existing Microsoft Outlook creds into the HTTP Request node, it reuses the same OAuth2 token but hits Inbox directly instead of AllItems.

achamm’s diagnosis matches what we’ve seen — `AllItems` is a virtual search folder that doesn’t resolve reliably under single-tenant Azure apps with just `Mail.Read`. It usually needs `Mail.Read.Shared` + admin consent, which most people don’t want to grant.

Concrete Graph API replacement that works with plain `Mail.Read`:

GET https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messages

?$top=10

&$orderby=receivedDateTime desc

&$filter=receivedDateTime gt {{ $now.minus({minutes:1}).toISO() }}

Swap `inbox` for `sentitems`, `drafts`, or a specific folder ID from /mailFolders when you need another scope.

One caveat: polling Graph directly means you’re reimplementing the dedup/state tracking the Trigger node does for you — easy with a Set node + static workflow variable, but worth knowing.

If you end up with a few of these wrapped-around-native-node workflows (M365, Google, Slack all have similar quirks on self-hosted), it gets tedious fast. We’ve been packaging them as auto-wrapped endpoints in an open gateway — github.com/ChronoAIProject/NyxID — so the OAuth dance and token refresh live in one place and n8n just does `Authorization: Bearer`. Not required to unstick this one, just a flag if the pattern starts repeating.