Power Automate SharePoint Triggers and Actions Explained

Every SharePoint trigger, every action, OData filter query syntax, and the advanced HTTP request action — the complete connector reference for flow builders.

The SharePoint connector in Power Automate is the most widely used connector in the platform — and the most frequently misused. Choosing the wrong trigger causes double-fires and infinite loops. Using "Get items" without a filter query loads thousands of records unnecessarily. The "Send an HTTP request to SharePoint" action unlocks capabilities no other action provides. This guide covers every trigger and action with the context you need to use each one correctly.

SharePoint Triggers: The Complete Reference

Triggers determine when a flow starts. The SharePoint connector offers two categories: list/library triggers (respond to item or file changes) and site triggers (respond to page or structural changes).

TriggerFires whenBest forGotchas
When an item is created A new list item is added to the specified list New record workflows: approval, notification, provisioning Does NOT fire on file uploads — use the file trigger for document libraries
When an item is created or modified Any change to a list item, including creation Status-change workflows where you need to react to updates Fires on every column change — guard against infinite loops with a condition on a specific column value
When an item is deleted A list item is deleted (moved to Recycle Bin) Archiving, audit logging, cascade deletions to related lists Only the item ID is available in the trigger — all other field values are gone; log them before deletion using a modified trigger
When a file is created (properties only) A new file is uploaded to a document library Document approval flows, virus scan triggers, metadata enforcement "Properties only" means no file content — use "Get file content" action if you need to process the file itself
When a file is created or modified (properties only) Any file upload or property update in a library Document approval with re-submission; metadata update notifications Most common source of infinite loops — always filter on a specific column value immediately after the trigger
When a file is created in a folder A file appears in a specific subfolder Folder-specific processing: scan invoices dropped in /Inbox folder Does not fire for files added to subfolders of the specified folder — only the exact folder path
For a selected item User manually triggers the flow from the SharePoint list item menu On-demand actions: generate a PDF, send a report, trigger a one-off sync Requires user to initiate — not suitable for automated background processes; appears in the "Automate" menu on the list
For a selected file User manually triggers from a file in a document library On-demand file processing: convert to PDF, send for signature, archive Same as above — user-initiated only
📄 SharePoint connector reference — learn.microsoft.com

SharePoint Actions: The Complete Reference

List item actions

ActionWhat it doesKey parameters
Get itemsRetrieves multiple list items — returns an array you can loop throughFilter Query (OData), Top Count, pagination, Order By, Select Columns
Get itemRetrieves a single list item by its IDID (integer — not the item's title or GUID)
Create itemAdds a new item to a SharePoint listAll list column values; required columns must have values or the action fails
Update itemModifies an existing list item — only specified fields are changedID of the item to update; only include columns you want to change
Delete itemMoves an item to the Recycle BinID of the item
Get list viewsReturns metadata about configured views in a listRarely needed in flows; useful for view-filtered data export scenarios

File and library actions

ActionWhat it doesKey parameters
Create fileUploads a file to a document library; creates the file if it doesn't existSite Address, Folder Path (relative), File Name, File Content (binary)
Get file contentDownloads the binary content of a fileSite Address, File Identifier (path or ID from trigger)
Get file metadataReturns metadata for a file (size, created date, modified by, etc.) without downloading contentFile Identifier
Update file propertiesWrites to the metadata columns of a document library itemSite Address, Library Name, ID, and any columns to update
Get file metadata using pathSame as Get file metadata but accepts a folder path string instead of file IDFile path relative to site root
Copy fileCopies a file to a new location (same or different site)Current Path, Destination Path, Whether to overwrite
Move or rename a fileMoves a file or changes its nameCurrent Path, New Path
Delete fileMoves a file to the Recycle BinFile Identifier
Extract folderUnzips a ZIP archive into a specified folderSource file path, Destination folder path

Mastering the "Get Items" Filter Query

The Filter Query parameter in "Get items" is where most Power Automate beginners lose time. It uses OData query syntax — a standard query language for REST APIs. Without it, "Get items" returns up to the Top Count limit regardless of what you actually need.

Essential OData filter query examples

// Filter by text column Status eq 'Pending Review' // Filter by number Amount gt 500 // Filter by date (ISO 8601 format — use formatDateTime() expression) DueDate lt '@{formatDateTime(addDays(utcNow(), 30), 'yyyy-MM-dd')}' // Filter by person column (use the Email sub-property) AssignedTo/EMail eq 'user@example.com' // Filter by choice column Department eq 'Finance' // Combine filters with AND Status eq 'Active' and Amount gt 1000 // Combine filters with OR Status eq 'Pending' or Status eq 'In Review' // Filter items created in last 7 days Created gt '@{formatDateTime(addDays(utcNow(), -7), 'yyyy-MM-ddTHH:mm:ssZ')}'

Person column gotcha: SharePoint Person columns store user objects, not strings. To filter by a person field, you must use the sub-property notation: AssignedTo/EMail eq 'user@domain.com' — not AssignedTo eq 'User Name'. The display name filter will always fail.

📄 OData query operations in SharePoint REST — learn.microsoft.com

The "Send an HTTP Request to SharePoint" Action

This action is the most powerful in the SharePoint connector and should be in every advanced flow builder's toolkit. It lets you call SharePoint's REST API directly — accessing capabilities not exposed through the standard actions, including:

  • Managing SharePoint groups and permissions programmatically
  • Accessing site properties, features, and navigation
  • Querying cross-list data with CAML queries
  • Working with content types, term store, and managed metadata
  • Reading and writing site columns and site content types

Example: Get all members of a SharePoint group

Site Address: https://yourorg.sharepoint.com/sites/yoursite Method: GET URI: _api/web/sitegroups/getbyname('Owners')/users Headers: Accept: application/json;odata=nometadata Content-Type: application/json

Example: Update a managed metadata field on a list item

Method: POST URI: _api/web/lists/getbytitle('Documents')/items(@{triggerOutputs()?['body/ID']}) Headers: Accept: application/json;odata=nometadata Content-Type: application/json IF-MATCH: * X-HTTP-Method: MERGE Body: { "Department": { "__metadata": {"type": "SP.Taxonomy.TaxonomyFieldValue"}, "Label": "Finance", "TermGuid": "your-term-guid", "WssId": -1 } }

Common Performance Patterns

Use "Get items" with Top Count to limit results

Set the Top Count to the minimum number you actually need. For larger result sets, enable the "Pagination" option in the action's Settings tab so Power Automate can retrieve multiple pages instead of relying on one oversized request.

Use "Select" to reduce payload size

By default, "Get items" returns all columns for every item, including internal system columns. Use the "Select Columns" parameter to specify only the columns your flow actually needs — this significantly reduces the payload size and speeds up large list queries:

// Select only the columns you need (comma-separated internal names) ID,Title,Status,DueDate,AssignedTo/EMail,AssignedTo/Title // For person columns, also add to Expand: AssignedTo

Avoid "Apply to each" on large result sets

Power Automate processes "Apply to each" loops sequentially by default (one item at a time). For large result sets this is slow. Enable concurrency in the loop's Settings tab (up to 50 concurrent iterations) — but be careful: concurrent SharePoint writes can cause throttling. Test with 5–10 concurrent iterations first.

Struggling with Power Automate performance or complexity?

OceanCloud's Power Platform team can review your existing flows, identify inefficiencies, and rebuild them with production-grade patterns — or design new flows from your requirements.

Book a Flow Review