Every new project site I set up for a client needs the same four views on its task list, and clicking them together by hand on each site gets old fast. Power Automate looks like the obvious fix, until you notice the SharePoint connector has no Create view action.
In this tutorial, we’ll create SharePoint list views using Power Automate with one REST call per view: a filtered and sorted view, a choice filter, a grouped view and a rolling 30-day date view. Everything below comes from a flow I built and ran today on my SPGuides site.
Quick answer: add a Send an HTTP request to SharePoint action, set Method to POST, Uri to _api/web/lists/getbytitle('Your List')/views/add, the Accept and Content-Type headers to application/json;odata=verbose, and send an SP.ViewCreationInformation body with Title, ViewFields, a CAML Query and RowLimit. One action creates one view.
Why Power Automate Needs the REST API to Create a View
The SharePoint connector can read views with Get list views, but it can’t create one. So we call the SharePoint REST API ourselves through Send an HTTP request to SharePoint, which runs any REST call your connection account is allowed to make.
If you came here to create the list itself, that’s a different call (a POST to _api/web/lists). I cover it in creating a SharePoint list and columns with Power Automate. For how the HTTP action works in general, see my guide to REST API calls in Power Automate.
Build the Flow Step by Step
My sample is a list called SPGDemo Project Tasks on /sites/SPGuides with 12 tasks. It has these columns, and every view below uses them:
| Column | Type | Values |
|---|---|---|
| Title | Single line of text | Task name |
| Status | Choice | Not Started, In Progress, Completed |
| Priority | Choice | High, Medium, Low |
| DueDate | Date only | 11/12/2026, 11/18/2026 … |
| AssignedTo | Single line of text | Person’s name |
| Department | Single line of text | Finance, HR, IT, Marketing, Sales |
Step 1: Create an instant flow. In Power Automate, select Create > Instant cloud flow, name it (mine is “SPGuides Demo – Create list views”), pick Manually trigger a flow and select Create.

Step 2: Add the HTTP action. Select the plus sign under the trigger, choose Add an action and search for Send an HTTP request to SharePoint. Pick the one from the SharePoint connector.

Step 3: Fill in the request. Choose your site in Site Address, set Method to POST and paste this Uri. The list title goes inside the quotes exactly as it appears in SharePoint:
_api/web/lists/getbytitle('SPGDemo Project Tasks')/views/add
Then add the two headers. Verbose JSON is what the SP.ViewCreationInformation body below expects:
{
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose"
}

Step 4: Paste the body. This creates the Open Tasks view. ViewFields lists the columns by internal name, Query holds the CAML filter and sort, and RowLimit sets items per page:
{
"parameters": {
"__metadata": { "type": "SP.ViewCreationInformation" },
"Title": "Open Tasks",
"ViewFields": {
"__metadata": { "type": "Collection(Edm.String)" },
"results": ["LinkTitle", "Status", "Priority", "DueDate", "AssignedTo", "Department"]
},
"Query": "<Where><Neq><FieldRef Name='Status'/><Value Type='Choice'>Completed</Value></Neq></Where><OrderBy><FieldRef Name='DueDate' Ascending='TRUE'/></OrderBy>",
"RowLimit": 30,
"PersonalView": false,
"SetAsDefaultView": false
}
}

Pro Tip: keep double quotes for the JSON and single quotes inside the CAML. Then nothing needs escaping, which is where most “bad request” errors in these bodies come from.
Step 5: Add the other three views. Rename the action to Create Open Tasks view, then copy it three times. In each copy, change only Title and Query (the next sections have the values). My flow ends with a Compose action called New view URLs.

Inside the Compose, one expression per view reads the new view’s address. The verbose response wraps the view in d, so the path goes through it:
@{body('Create_Open_Tasks_view')?['d']?['ServerRelativeUrl']}
Step 6: Save and test. Select Save, then Test > Manually > Run flow. My run on 11/01/2026 succeeded, and each POST took 0.3 to 0.5 seconds.

The Compose output listed four URLs, such as /sites/SPGuides/Lists/SPGDemo Project Tasks/Open Tasks.aspx. SharePoint names the view page after the title and keeps the spaces.
View 1: Open Tasks (Filter Out Completed and Sort by Due Date)
The Open Tasks body from Step 4 uses Neq (not equal) on Status and an OrderBy on DueDate. If writing CAML by hand feels fiddly, my CAML query builder guide shows how to generate and test it first.
<Where><Neq><FieldRef Name='Status'/><Value Type='Choice'>Completed</Value></Neq></Where><OrderBy><FieldRef Name='DueDate' Ascending='TRUE'/></OrderBy>

The view shows 8 of the 12 tasks with Completed ones hidden, sorted from 11/12/2026, 11/18/2026, 11/20/2026 and 11/28/2026 onward. Because PersonalView is false, it’s a public view that everyone sees in the view switcher.
View 2: High Priority (Filter on a Choice Column)
Same list, a different Title (“High Priority”) and a simpler Query. A choice column compares with Eq and Type='Choice':
<Where><Eq><FieldRef Name='Priority'/><Value Type='Choice'>High</Value></Eq></Where>

It returned 4 items, and one of them is the Completed “Power BI sales dashboard” task. That’s correct: this query filters only on Priority. To hide finished work too, combine two conditions, as shown in the patterns section below.
View 3: Tasks by Department (Group By)
Grouping doesn’t need a Where at all. GroupBy goes in the same Query string, and Collapse=’FALSE’ opens the groups when the view loads:
<GroupBy Collapse='FALSE' GroupLimit='30'><FieldRef Name='Department'/></GroupBy><OrderBy><FieldRef Name='DueDate' Ascending='TRUE'/></OrderBy>

The view groups Finance (2), HR (2), IT, Marketing and Sales, all expanded and sorted by due date inside each group. You can build the same view by hand in the browser, as my SharePoint list view guide shows, but the flow repeats it on every site in seconds.
View 4: Due in 30 Days (Rolling Date Range With Today)
For dates, don’t paste a fixed date into the query. CAML’s <Today/> element is evaluated when someone opens the view, and OffsetDays adds days to it:
<Where><And>
<Geq><FieldRef Name='DueDate'/><Value Type='DateTime'><Today/></Value></Geq>
<Leq><FieldRef Name='DueDate'/><Value Type='DateTime'><Today OffsetDays='30'/></Value></Leq>
</And></Where>

On 11/01/2026 it showed 4 tasks, due 11/12/2026 through 11/28/2026, and the 12/05/2026 task was left out. This query has no OrderBy, so rows appear in ID order. Add the OrderBy from View 1 if you want them by date.
More CAML Patterns: OR, Descending Sort and Three Conditions
These are swaps for the Query value; the rest of the body stays the same. Note that CAML filters a view, while an OData filter selects items inside a flow (see Power Automate OData filter queries).
OR shows tasks that are either Not Started or In Progress:
<Where><Or>
<Eq><FieldRef Name='Status'/><Value Type='Choice'>Not Started</Value></Eq>
<Eq><FieldRef Name='Status'/><Value Type='Choice'>In Progress</Value></Eq>
</Or></Where>
Descending sort flips the order, latest due date first:
<OrderBy><FieldRef Name='DueDate' Ascending='FALSE'/></OrderBy>
Three conditions need nesting. Microsoft’s CAML reference says an And can have only two child elements, so the third condition sits next to an inner And:
<Where><And>
<And>
<Eq><FieldRef Name='Priority'/><Value Type='Choice'>High</Value></Eq>
<Neq><FieldRef Name='Status'/><Value Type='Choice'>Completed</Value></Neq>
</And>
<Eq><FieldRef Name='Department'/><Value Type='Text'>Finance</Value></Eq>
</And></Where>
Important: the earlier version of this guide put three conditions inside one And. That breaks the two-child rule, so use the nested form above.
views/add vs POST to /views: Which REST Call to Use
You’ll also see an older pattern online: a POST to .../views with an SP.View body and a ViewQuery property. It creates a view with a title and query:
{
"__metadata": { "type": "SP.View" },
"Title": "High Priority",
"ViewQuery": "<Where><Eq><FieldRef Name='Priority'/><Value Type='Choice'>High</Value></Eq></Where>"
}
I use views/add because SP.ViewCreationInformation also takes ViewFields, RowLimit, PersonalView and SetAsDefaultView in the same call, so the view has the right columns from the start. My SharePoint REST API guide lists the other list and view endpoints.
Common Errors and How to Fix Them
- 403 “Access is denied”. The connection account needs Manage Lists permission on the list. Run the flow with an account that’s a site owner, or grant that permission level.
- “Required properties are missing from object: text”. The manual trigger still lists a required input that doesn’t exist. Remove the input from the trigger or make it optional.
- The view shows every item. A FieldRef name doesn’t match. CAML uses internal column names (DueDate, not “Due Date” with a space).
- Three conditions return wrong results. One And holds only two children. Nest the extra condition, as shown above.
- Bad request on the body. Check for unescaped double quotes inside the CAML. Single quotes inside Query avoid the problem.
To read or clean up views later, my post on how to get and delete a SharePoint list view using Power Automate uses the same HTTP action. More flows are on the Power Automate tutorials hub.
If you’re automating list setup, these tutorials fit well next:
Frequently Asked Questions
Can Power Automate create a SharePoint list view?
Yes, but not with a built-in action. Use Send an HTTP request to SharePoint with a POST to _api/web/lists/getbytitle(‘List’)/views/add and an SP.ViewCreationInformation body. Each action creates one view.
Can Power Automate create a SharePoint list too?
Yes. That is a separate REST call: a POST to _api/web/lists with an SP.List body, sent through the same Send an HTTP request to SharePoint action. There is no Create list action in the SharePoint connector.
How do I make the new view the default view?
Set “SetAsDefaultView”: true in the body. Leave it false, as in my examples, when the view should only be added to the view switcher.
Who can see a view created by the flow?
With “PersonalView”: false the view is public, so everyone with access to the list sees it. The account behind the flow connection needs Manage Lists permission to create it.
How do I combine more than two conditions in a view filter?
Nest And or Or elements, because each one takes only two child conditions, as the CAML And element reference explains.

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.