Loading tutorials…
Loading tutorials…
SharePoint + Teams + Power Automate is the holy trinity of M365 automation. Lists become databases, document libraries become workflows, Teams becomes the notification surface. This walks the right integration patterns.
Who this is forOperators in M365 shops automating internal processes that use SharePoint lists/libraries and Teams channels. Especially common: onboarding, document approval, IT request intake, project status tracking.
What you'll need
Step 1
"When an item is created" (new only), "When an item is modified" (any change), "When an item is created or modified" (both). Pick deliberately.
Power Automate has three SharePoint list triggers:
- "When an item is created" — fires only on new items. Good for intake workflows.
- "When an item is modified" — fires on any column change to any existing item. Noisy.
- "When an item is created or modified" — fires on both. Even noisier.
For "alert me when status changes to Approved" — use "When an item is modified" + a Condition checking if status equals "Approved."
Same for document library triggers: "When a file is created" vs. "When a file is created or modified."
Picking the wrong trigger = noisy flows that fire on every minor edit.
Step 2
After the trigger, add a Condition or Filter to only continue when the change is meaningful. Reduces Teams noise dramatically.
Add a Condition action immediately after the trigger.
Set the condition based on what you actually care about:
- "Status equals 'Approved'" — only fires when status flips to Approved.
- "Approved date is not empty AND was empty in the previous version" — true status flip.
For deeper change detection: use the "Get changes for an item or file" action to compare current state to previous version.
Without filtering, flows fire on every cell edit. Teams channels become noise.
Step 3
Use "Post message in a chat or channel" → choose channel → format message with markdown OR use Adaptive Cards for rich formatting.
Add a Teams action: "Post message in a chat or channel."
Choose the target Team and Channel.
For simple notifications: use the Message field with markdown formatting (bold, links, line breaks).
For rich notifications with structured data: use "Post an Adaptive Card to a channel" instead. Adaptive Cards support buttons, fields, images, action buttons.
Tag people in messages: include `<at>Person Name</at>` in the message body. Tagged users get a notification.
For high-stakes alerts: also use the "@channel" mention to alert everyone in the channel.
Step 4
When list columns are renamed or removed, flows break silently. Build defensively against schema changes.
Power Automate references SharePoint columns by internal name. When a column is renamed, the internal name often stays the same (good).
When a column is deleted, every flow referencing it breaks.
Defensive pattern: avoid referencing too many columns. Pick the 3-5 you really need.
For each referenced column, document its existence in a "Flow Documentation" SharePoint list. When someone proposes deleting a column, check the documentation first.
Set up monthly flow-health audit: query Power Automate Management connector for failed flows, surface to admins.
Step 5
Triggers on libraries with 5,000+ items can throttle or miss events. Use "Get items" with $filter and pagination instead of relying on triggers.
SharePoint has a "list view threshold" of 5,000 items. Triggers on libraries past this threshold can throttle.
For large libraries: use scheduled flows that periodically poll the library using "Get items" or "Get files (properties only)" with $filter queries.
Example: every 15 minutes, get all items where Status = "New" and ModifiedDate > [last check]. Process each. Update [last check] timestamp.
This pattern is more reliable than event-driven triggers on large libraries.
Step 6
Use a test SharePoint list and a private test Teams channel. Validate every condition + outcome before pointing at production.
Create a test SharePoint list mirroring the production schema.
Create a private test Teams channel.
Build the flow against test resources. Trigger 10-20 test events covering edge cases (empty fields, special characters, unicode).
Verify Teams messages appear correctly. Verify Conditions filter correctly.
When the flow is solid, save a copy, point the copy at production resources, and deploy.
Step 7
A scheduled flow that queries Power Automate Management connector and posts a daily digest of failed flows.
Create a separate flow: "Daily Flow Health Digest."
Schedule: every day at 9 AM.
Use Power Automate Management connector → "List Flows" + "Get Flow Run History."
Filter for flows that failed or were disabled in the last 24 hours.
Post to an admin Teams channel: "Yesterday: 142 flow runs, 3 failures across 2 flows. Top failure: [flow name] (2 errors)."
This is your safety net for accumulating silent failures.
Common mistakes
Using "When an item is modified" without a filter
What goes wrong: Flow fires on every cell edit including auto-updates to Modified Date. Teams channel gets 50 spam messages per real event. Users mute the channel. Real alerts get missed.
How to avoid: Always add a Condition immediately after the trigger that filters for meaningful changes (status flips, field-set-from-empty, etc.).
Referencing too many SharePoint columns
What goes wrong: Flow references 20 columns. Two are renamed and one is deleted by an admin during a list cleanup. Flow breaks. You discover days later when nobody has been notified.
How to avoid: Reference the minimum columns needed (3-5 ideal). Document column dependencies in a Flow Documentation list.
Event-driven triggers on libraries with 5,000+ items
What goes wrong: Library exceeds list view threshold. Trigger throttles and misses events. Flows appear to work but skip 30% of new items.
How to avoid: For large libraries, use scheduled polling with $filter queries instead of event triggers.
Posting to Teams without tagging
What goes wrong: Critical alert posts to a Teams channel. Nobody is tagged or @mentioned. The message scrolls past unread. Action item missed for 2 days.
How to avoid: For action-required messages, tag specific people via `<at>Person Name</at>` in the message body. For broad alerts, use `@channel`.
No test environment
What goes wrong: Build the flow directly against production SharePoint + Teams. First test fires 47 messages to the real channel. Embarrassing apology + bad first impression of the flow.
How to avoid: Build and test against a test SharePoint list + private Teams channel. Promote to production after validation.
No daily flow health monitoring
What goes wrong: Flows accumulate silent failures over weeks. Power Automate auto-disables flows after 14 days of consecutive failures (default). Disabled flows are invisible until someone investigates.
How to avoid: Build a daily flow health digest that surfaces failures and disabled flows.
Recap
Done — what's next
How to set up Power Automate cloud flows
Read the next tutorial
Hand it off
SharePoint + Teams + Power Automate is high-leverage when set up right. EverestX specialists with Microsoft experience handle the trigger discipline, Adaptive Card formatting, and monitoring patterns by default. Typically $400-1,000/mo for ongoing management.
See specialist rates
You are using 'When an item is modified' without a filter. SharePoint modifies items invisibly (auto-update of Modified Date). Always add a Condition immediately after the trigger to filter for meaningful changes.
By default, messages post as the flow owner. To post as a bot/app identity, use the 'Post as the Flow bot' option in the Teams action. Some tenant admins disable this for security.
Use 'Get changes for an item or file' after the trigger. It returns which columns changed. Compare current value to previous version to detect specific transitions.
Yes. Use 'For a selected message' trigger to allow users to invoke flows from a Teams message via the actions menu. Useful for ad-hoc workflows like 'Create a SharePoint task from this message.'
Triggers on document libraries fire on files in any folder. To trigger only on specific folders, add a Condition checking the file path or use the 'Folder path' field on the trigger.
Microsoft Power Automate
Power Automate is the right call when your stack lives in Microsoft 365 — but the licensing maze and Premium connector trap catch most newcomers. This walks the right setup path end-to-end, in plain language.
Microsoft Power Automate
Approvals are the #1 use case for Power Automate in most M365 shops. Done right, a 3-day approval becomes a 30-minute click-in-Teams flow. Done wrong, requests sit in limbo for weeks. This walks the right pattern.
Microsoft Power Automate
Your flow worked yesterday. Today it returns 429 'Too Many Requests.' Power Automate connector limits are real and per-license-tier. This walks the diagnostic sequence specialists run.
Microsoft Power Automate
DIY Power Automate is great until you have 15 flows, Premium licensing confusion, and a SharePoint admin asking why their list keeps getting cluttered. This is the honest framework: when the cost of self-managing exceeds the cost of hiring.
Zapier
You signed up for Zapier and the dashboard is staring at you. This walks through one real, working Zap end-to-end — trigger app, action app, sample data, test, turn on — without the marketing fluff.