Tutorials/Power Apps/Patch Every SharePoint Column Type in Power Apps: A Complete Reference
Power Appsintermediate

Patch Every SharePoint Column Type in Power Apps: A Complete Reference

A practical guide with ready-to-use Patch function patterns for all major SharePoint column types, including single and multiple lines of text, choices, people, lookups, hyperlinks, images, currency, yes/no, task outcome, and more.

NA
Narmer Abader
@narmer · Published June 3, 2026

Whether you are building a project tracker, a leave request app, or a custom ticket system, the Patch function in Power Apps is the most reliable way to create and update items in SharePoint. But each SharePoint column type expects data in a slightly different shape. This reference brings together examples for all major column types, using a consistent sample list.

Sample List Used in the Examples

All code blocks below are written for a SharePoint list called ProjectTracker. Below are the columns we will be patching:

  • ProjectName – Single line of text
  • Description – Multiple lines of text
  • Budget – Currency
  • StartDate – Date and Time
  • TargetDate – Date only
  • Priority – Choice (single select: High, Medium, Low)
  • Tags – Choice (multi-select: Design, Development, Testing, Security)
  • Lead – Person or group (single)
  • TeamMembers – Person or group (multiple)
  • ParentProject – Lookup to a Projects list (get Title)
  • ProjectURL – Hyperlink
  • ProjectImage – Image
  • IsActive – Yes/No
  • TaskOutcome – Task Outcome (from a Task list)
Types that cannot be patched

Calculated columns, External Data columns, and Location columns cannot be modified using Patch. Those values are derived from formulas or external systems.

General Patch Syntax

Every Patch call follows the same structure:

powerfxGeneric Patch Syntax
Patch(DataSource, BaseRecord, ChangeRecord1, ChangeRecord2, ...)
  • DataSource – name of your SharePoint list.
  • BaseRecord – either Defaults(DataSource) for a new item, or an existing record to update (e.g., Gallery1.Selected).
  • ChangeRecord(s) – one or more records with the columns you want to set.

Now let us see how each column type is handled.

Single and Multiple Lines of Text

ProjectName – a plain text column. Pass a string directly.

powerfxCreate item with single line of text
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{ProjectName: "Mobile App v2"}
)

Description – for a multi-line text column, the same pattern works. Even if the column is configured as “Enhanced rich text”, plain text will be accepted.

powerfxCreate item with multi-line text
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{Description: "This project modernizes the onboarding experience."}
)

Number and Currency

Both Number and Currency columns expect a numeric value.

powerfxPatch Currency column
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{Budget: 42500}
)

For a plain number column the code is identical; just change the column name and value type.

Date and Time

StartDate (Date and Time) – use Now(), Today(), or a date/time literal.

powerfxPatch a Date/Time column
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{StartDate: Now()}
)

TargetDate (Date only) – it is safer to use DateValue() or Date() to avoid time drift.

powerfxPatch a Date-only column
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{TargetDate: DateValue("2026-08-15")}
)
Time zone

When working with Date & Time columns, be aware that Power Apps sends UTC values. Always verify the displayed time after the patch.

Choice (Single and Multi‑Select)

Priority (single choice) – pass the exact choice string as it appears in the column settings.

powerfxPatch a single-choice column
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{Priority: "High"}
)

Tags (multi-choice) – pass an array of strings. SharePoint expects a JSON array, but Power Apps handles the conversion automatically.

powerfxPatch a multi-choice column
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{Tags: ["Design", "Security"]}
)

Person or Group (Single and Multi‑Select)

Lead (single person) – provide an object with Claims, DisplayName, and Email. The easiest way is to pass the whole record from a People Picker control or from Office365Users.

powerfxPatch a single-person column
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{Lead: {
  Claims: "i:0#.f|membership|jane@contoso.com",
  DisplayName: "Jane Doe",
  Email: "jane@contoso.com"
}}
)

If you are using a People Picker control named PeoplePicker1, simply use its .Selected property.

powerfxPatch single person from a People Picker
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{Lead: PeoplePicker1.Selected}
)

TeamMembers (multiple people) – you must pass a table of person objects. Use the Table() function to build the list.

powerfxPatch a multi-person column
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{TeamMembers: Table(
  {Claims: "i:0#.f|membership|bob@contoso.com", DisplayName: "Bob Smith", Email: "bob@contoso.com"},
  {Claims: "i:0#.f|membership|alice@contoso.com", DisplayName: "Alice Wu", Email: "alice@contoso.com"}
)}
)

Lookup

ParentProject – a lookup column that pulls the Title from the Projects list. The safest method is to set the ID field (usually ParentProjectId) rather than the lookup display field.

powerfxPatch a lookup column by ID
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{ParentProjectId: 3}
)

If you also want to specify the display value, pass a nested record.

powerfxPatch a lookup column with value
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{ParentProject: {Id: 3, Title: "Project Omega"}}
)

ProjectURL – this column is a record with two fields: Url and Description.

powerfxPatch a hyperlink column
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{ProjectURL: {
  Url: "https://powerapps.microsoft.com",
  Description: "Project Documentation"
}}
)

Image

ProjectImage – an image column cannot be patched with a binary stream. Instead, you must provide information about an image that already exists in SharePoint. Use the RelativeUri, FileName, and optionally Id.

powerfxPatch an image column (reference existing image)
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{ProjectImage: {
  RelativeUri: "/sites/ProjectTracker/ProjectTracker/attachments/logo.png",
  FileName: "logo.png",
  Id: 1
}}
)

For a brand new image, you usually create the item first and then upload the file using Patch on the image column or a separate file upload flow.

Yes/No

IsActive – a boolean column is patched with the true or false value.

powerfxPatch a Yes/No column
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{IsActive: true}
)

Task Outcome

TaskOutcome – this column type is common in SharePoint Task lists. The valid strings are “Not Started”, “In Progress”, “Completed”, “Waiting on someone else”, and “Deferred”.

powerfxPatch a Task Outcome column
Patch(
ProjectTracker,
Defaults(ProjectTracker),
{TaskOutcome: "In Progress"}
)
Fixed set of values

If you use a choice column manually set with those five values, the same code works. For the official Task Outcome column, the values are predetermined by SharePoint.

Security and Performance Considerations

  • Permissions – Patch respects the user’s SharePoint edit rights. If the user can modify the item through the SharePoint UI, they can modify it through Patch.
  • Delegation – Patch itself is not a delegable function, but it operates on individual records. If you first retrieve a record (e.g., LookUp or FirstN(Filter(...))), ensure that retrieval uses delegable operators to avoid hitting the 500 or 2000 record limit.
  • Batching – Avoid chaining many Patch calls in a single ForAll. If you must process multiple items, consider a Power Automate flow or a single Patch with multiple change records (works only for updating a single item).

Common Mistakes

  • Using the display name instead of the internal name – For example, a person column might be called Lead in the UI but LeadId is the relationship column. Power Apps usually resolves the display name, but it is safer to confirm the internal name from the advanced pane.
  • Forgetting Claims in a person object – Missing Claims can cause the patch to fail silently.
  • Patching a lookup with the wrong ID – The ID must exist in the related list, otherwise the patch returns an error.
  • Using DateValue for a DateTime columnDateValue returns a date only. Use DateTimeValue if you need the time component.
  • Confusing single‑choice and multi‑choice – Always verify the column’s “Allow multiple selections” setting. A single‑choice expects a string; multi‑choice expects an array.

Final Recommendation

Start with simple columns (text, number, yes/no) to confirm your data source connection is correct. Then add more complex types one at a time. Keep the internal column names at hand and test each Patch with a single item before rolling it out to your app. By understanding the exact data shape each column expects, you can confidently handle any SharePoint list from Power Apps.

References