Product Catalog Sync to SharePoint List
Weekly sync pulls all active products from Salesforce, compares against a SharePoint list, and creates/updates items to keep a cross-team accessible product catalog outside of Salesforce.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
FlowLibs - Product Catalog Sync to SharePoint List is a scheduled Cloud Flow that synchronizes active product records from Salesforce into a SharePoint list. It runs weekly on Mondays at 8:00 AM EST, performing an upsert operation — creating new SharePoint items for products that don't exist yet and updating existing ones when a match is found by Salesforce ID.
This flow enables sales teams and operations staff to access product catalog data without needing a Salesforce license, making cross-team product visibility simple and low-friction.
Use Case
Organizations using Salesforce as their product master often need to share catalog data with teams that don't have CRM access. This flow bridges that gap by maintaining a synchronized SharePoint list that mirrors the active Salesforce product catalog.
The flow is ideal for teams that:
- Sales enablement — Field reps can reference products in SharePoint or Teams without logging into Salesforce
- Operations reporting — Ops teams can build Power BI dashboards against the SharePoint list
- Cross-system lookups — Other Power Automate flows can reference the SharePoint product list as a lightweight cache
Flow Architecture
Weekly Recurrence
RecurrenceRuns every Monday at 8:00 AM EST.
Initialize varSharePointSiteUrl
Initialize variableInitializes the SharePoint site URL from environment variable flowlibs_SharePointSiteURL.
Initialize varProductCatalogListId
Initialize variableInitializes the SharePoint list GUID from environment variable flowlibs_ProductCatalogListId.
Initialize varSyncedCount
Initialize variableInteger counter for synced products, initialized to 0.
Get Salesforce Products
Salesforce — Get recordsQueries the Salesforce Product2 table with filter IsActive eq true, sorted by Name asc, returning up to 500 records.
For Each Product
Apply to each (concurrency = 1)For each Salesforce product, look it up in the SharePoint list by SalesforceId and either update the existing item or create a new one, then increment the synced count.
Check If Product Exists in SharePoint
SharePoint — Get itemsFiltered by SalesforceId eq '{current item Id}' to detect whether the product already exists in the target list.
If Existing Product
If conditionTests whether the SharePoint lookup returned any items, branching between update and create.
- Update Existing Product — SharePoint PatchItem updates Name, Description, ProductCode, Family, IsActive, and LastSyncDate on the matched list item.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_SharePointSiteURL | String | https://your-tenant.sharepoint.com | Target SharePoint site for the product catalog list. |
| flowlibs_ProductCatalogListId | String | <configure> | GUID of the 'FlowLibs - Product Catalog' SharePoint list. Set this to the list ID in your tenant. |
| flowlibs_ProductCatalogSyncNotificationEmail | String | alerts@yourcompany.com | Reserved for future error notification action; set to the address that should receive sync failure alerts. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Salesforce | shared_salesforce | GetItems_table_product2 (Get Salesforce Products (Product2 table)) |
| SharePoint Online | shared_sharepointonline | GetItems (Check If Product Exists in SharePoint) PatchItem (Update Existing Product) PostItem (Create New Product) |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Change the sync schedule
- Edit the Weekly Recurrence trigger — modify interval, frequency, schedule.weekDays, or startTime to adjust timing.
- Add more Salesforce fields
- Add corresponding columns to the SharePoint list, then update both the Create_New_Product (PostItem) and Update_Existing_Product (PatchItem) actions to map the new fields.
- Change the Salesforce filter
- Modify the $filter parameter on the Get_Salesforce_Products action. Current filter is IsActive eq true.
- Add error handling
- Wrap the For Each loop body in a Scope with a configure-run-after pattern. Use the reserved flowlibs_ProductCatalogSyncNotificationEmail environment variable to send failure notifications.
- Increase record limit
- The current $top is set to 500. Increase this or implement pagination for larger catalogs.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Upsert check
Used in the If condition to detect whether an existing SharePoint item was returned.
EXPR.02Get existing item ID for update
Pulls the SharePoint list item ID for the matched product so PatchItem can target it.
EXPR.03Sync timestamp
Stamps the LastSyncDate column on every created/updated item.
EXPR.04SharePoint site from env var
Pulls the SharePoint site URL out of the initialized variable for use in SharePoint actions.
EXPR.05List ID from env var
Pulls the target list GUID out of the initialized variable for use in SharePoint actions.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.