“I’m bored from manually creating columns in a SharePoint list, can I somehow automate it and create a column using Power Automate flow?”
Creating SharePoint columns doesn’t belong among the most entertaining tasks, especially if there’re multiple columns or multiple lists where you must create them. It can so easily turn into lots of annoying mouse clicks to do that. But do you have to do it manually? Wouldn’t it be much better if you could automate the task?
Create the field XML schema
Before you can create a new field, you must compose the field information, e.g. name, what type of field it is, etc. I found this blog post as a good reference for the XML for each of the column types, even though it needs a small change to be used in Power Automate flow. Let’s take an example, a single line of text column:
<Field
Type="Text"
DisplayName="Document Title English"
StaticName="TitleEN"
Name="TitleEN">
Description="Document Title in English"
Required="TRUE"
EnforceUniqueValues="FALSE"
Indexed="FALSE"
MaxLength="255"
Group="Demo"
ID="{161ef8f6-e73c-4c56-8a5f-c6a8900f2fc8}"
</Field>
You can see that there’re multiple names for the column. There’s the DisplayName, StaticName and Name. While the StaticName and Name are intended to be that column’s internal name, it’ll actually use the DisplayName. You don’t want that as such internal name would be terrible to work with. Therefore, use the same internal name for all the names – no spaces, no special characters, e.g.
<Field
Type="Text"
DisplayName="TitleEN"
StaticName="TitleEN"
Name="TitleEN">
Description="Document Title in English"
Required="TRUE"
EnforceUniqueValues="FALSE"
Indexed="FALSE"
MaxLength="255"
Group="Demo"
ID="{161ef8f6-e73c-4c56-8a5f-c6a8900f2fc8}"
</Field>
Use the XML schema in an HTTP request
You defined the column, now you can create it with an HTTP request to SharePoint.
Method: POST
Uri: _api/web/lists/getByTitle('<listName>')/fields/createfieldasxml
Headers:
{
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose"
}
Body:
{
'parameters': {
'__metadata': {
'type': 'SP.XmlSchemaFieldCreationInformation'
},
'SchemaXml': '<columnXmlDefinition>'
}
}
Note: <…> are placeholders, replace them including the < and >.

This request will take the column configuration from the XML and use it to create the column in the SharePoint list. But since you had to use the internal name in the XML definition, you should use one more step to rename the column (unless you’re fine keeping the internal name).
Change the column display name
The field can be renamed with another HTTP request to SharePoint. You’ll need the list name, the column internal name (from the XML definition) and the new name.
Method: PATCH
Uri: _api/web/lists/getByTitle('<listName>')/fields/getbytitle('<columnInternalName>')
Headers:
{
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose",
"IF-MATCH": "*"
}
Body:
{
'__metadata': {
'type': 'SP.FieldText'
},
'Title': '<newColumnName>'
}
Note: <…> are placeholders, replace them including the < and >.

The request will find the column and change its name to the new value.
Summary
To create a new SharePoint column using Power Automate flow you’ll need three things. Firstly, the XML for the new column with all its settings. Secondly, an HTTP request that’ll take this XML and create the new column according to these instructions. And thirdly, another HTTP request to rename the column to a more user friendly display name.
You could add also one HTTP request in between to add the column to a view.