Claude Prompts for Power Automate
35 copy-paste prompts that turn Claude into the flow architect you do not have. Paste a process, a failed run's JSON, or a sample API response, and Claude gives back the trigger condition, the Parse JSON schema, the OData filter, and the expression string you paste straight into the designer.
In short: This page contains 35 copy-paste ready prompts, organized into 5 categories with a description and pro tip for each. The first 5 prompts are free instantly, no signup needed. Hand-curated and tested by the AI Academy team.
Flow Design & Triggers
7 promptsFlow Blueprint From a Manual Process
1/35✨ What it does
Claude designs the Power Automate flow before you build it: trigger, ordered actions, connectors, variables, and what to leave manual. You build from that plan in [SHAREPOINT / DATAVERSE / OUTLOOK / TEAMS / SQL] instead of inventing steps as you go.
<context>I am automating a manual process in Power Automate. Here is how the team does it today, step by step: [PASTE THE PROCESS: who does what, in which system, in what order, with which approvals]. Environment: [SHAREPOINT / DATAVERSE / OUTLOOK / TEAMS / SQL].</context> <task>Design the flow before I build it. Pick the trigger, list every action in order, name the connectors, and flag the steps that cannot be automated and must stay manual.</task> <format>1. Trigger (type, connector, why) 2. Numbered action list with connector and action name for each 3. Variables to initialize at the top and their types 4. Steps that stay manual, with the reason 5. Premium connector warnings 6. Build order so I can test incrementally</format>
Pro tip: Ask for the build order explicitly. Building a 30-action flow top to bottom means you only discover the broken trigger at the end. Claude will sequence it so every stage is testable on its own.
Trigger Choice and Trigger Condition
2/35✨ What it does
Claude picks the right trigger and writes the trigger condition that stops unwanted runs before they use up quota. You paste the condition on the trigger and test a case from [LIST THE CASES YOU WANT TO SKIP].
<context>Scenario: [DESCRIBE WHAT SHOULD START THE FLOW]. Source: [SHAREPOINT LIST / OUTLOOK MAILBOX / FORMS / DATAVERSE TABLE / HTTP]. It must NOT fire when: [LIST THE CASES YOU WANT TO SKIP]. Available columns or fields: [PASTE THE LIST].</context> <task>Recommend the right trigger, then write the trigger condition expression that filters out the unwanted runs at the trigger itself instead of burning a run on a Condition action.</task> <format>1. Recommended trigger and the two runners-up with trade-offs 2. Trigger condition expression, ready to paste in Settings, in a code block 3. Plain English translation of that expression 4. Where exactly to paste it (Settings, Trigger Conditions) 5. Two test cases: one that should fire, one that should not</format>
Pro tip: Trigger conditions are the cheapest filter in Power Automate. A run skipped at the trigger costs nothing against your daily action limit. A run that starts and hits a Condition action still counts.
Recurrence Schedule With Business Day Logic
3/35✨ What it does
Claude gives you the Recurrence trigger settings plus the expression that skips weekends and your holiday list without a failed run. You paste both into the scheduled flow and watch one skipped day exit cleanly.
<context>I need a scheduled flow that runs [FREQUENCY], but only on business days in [TIME ZONE], skipping weekends and this holiday list: [PASTE DATES]. Downstream actions: [DESCRIBE BRIEFLY].</context> <task>Give me the Recurrence trigger configuration plus the trigger condition or first-step expression that exits cleanly on non-business days.</task> <format>1. Recurrence settings: interval, frequency, time zone, at these hours, on these days 2. Expression for the weekend and holiday check, in a code block 3. Where to put it: trigger condition versus a Terminate action, with the recommendation 4. How to store the holiday list so it survives next year 5. Daylight saving trap to check</format>
Pro tip: Terminate with status Succeeded, not Failed, when the flow simply has nothing to do. Failed runs trigger owner emails and pollute the analytics you use to spot real breakage.
Infinite Loop Prevention Check
4/35✨ What it does
Claude finds the self-triggering loop and ranks every viable way to break it, including a trigger condition or a flag pattern. You apply one fix and confirm the flow no longer retriggers on its own update.
<context>My flow triggers on [WHEN AN ITEM IS CREATED OR MODIFIED / SIMILAR] and later updates the same [LIST / TABLE], which re-triggers it. Flow summary: [PASTE THE ACTION LIST]. Service account or connection owner: [NAME OR EMAIL].</context> <task>Diagnose the loop and give me every viable way to break it, ranked by reliability, with the exact expression for the option you recommend.</task> <format>1. Where the loop closes, action by action 2. Options ranked: trigger condition on Editor, a status column flag, a dedicated flag column, unchanged-column check 3. Recommended option with the exact trigger condition expression in a code block 4. What to clean up in existing data before turning it back on 5. How to confirm the loop is gone in run history</format>
Pro tip: Filtering on the Editor field only works if the flow writes with a different account than the humans. If everyone uses the same service account, ask Claude for the flag column pattern instead.
Connector and Licensing Map
5/35✨ What it does
Claude maps each flow step to a connector, marks which ones need premium licensing, and gives a standard-connector workaround for each. You pick the licensed path or the workaround before you build.
<context>The flow needs to touch these systems: [LIST THE SYSTEMS AND WHAT IT DOES IN EACH]. Our licensing: [MICROSOFT 365 ONLY / PER USER PREMIUM / PER FLOW PLAN / NOT SURE].</context> <task>Map each step to a connector, mark which ones are premium, and give me a standard-connector workaround for every premium dependency so I can price the flow before building it.</task> <format>1. Table: step, connector, action, standard or premium 2. Premium dependencies with the licensing implication in one line each 3. Standard-only workaround for each premium item, and what you lose by taking it 4. Total verdict: can this run on Microsoft 365 licensing alone, yes or no 5. Questions to ask our admin before building</format>
Pro tip: The HTTP action is premium, but many APIs are also reachable through a standard connector's built-in actions. Ask Claude for that alternative before you commit to a per-user premium license.
Split a Monolith Into Child Flows
6/35✨ What it does
Claude breaks the bloated flow into a parent plus child flows, with explicit input and output contracts. You create the child flows first, then point the parent at those contracts.
<context>I have one flow with roughly [NUMBER] actions doing several jobs. Here is what it does end to end: [PASTE THE ACTION LIST OR A DESCRIPTION]. It is slow to edit, slow to test, and every change risks the whole thing.</context> <task>Decompose it into a parent flow plus child flows. Define the input and output contract for each child so I can build them independently.</task> <format>1. Proposed split with a one-line responsibility per flow 2. For each child: trigger type, input parameters with types, response body fields 3. Parent orchestration order and what it does with each response 4. What must live in a solution for child flows to work 5. Migration order so the flow keeps running while I refactor</format>
Pro tip: Child flows need the manually-triggered-flow trigger and a Respond to a Power App or Flow action, and both parent and child must sit in the same solution. Have Claude spell out the response schema so the parent parses it cleanly.
Naming Convention and Environment Plan
7/35✨ What it does
Claude writes a flow naming convention and an environment plan a non-technical team will follow, plus a rename table for the flows you already have. You rename the existing flows from that table, then use the convention on new ones.
<context>Here is our current flow inventory: [PASTE FLOW NAMES, OWNERS, AND WHAT THEY DO]. Team size: [NUMBER]. Environments available: [DEFAULT ONLY / DEV, TEST, PROD].</context> <task>Write a naming convention and an environment and solution strategy that a non-technical team will actually follow, then rename my existing flows to match.</task> <format>1. Naming pattern with the reasoning, in one line 2. Three worked examples of the pattern 3. Table: current flow name, proposed name 4. Solution and environment layout, with what belongs where 5. Ownership rules: who owns connections, what happens when someone leaves 6. One-paragraph policy text I can paste into our wiki</format>
Pro tip: The real risk is a flow owned by someone who left the company: its connections die with the account. Ask Claude to include a service-account ownership rule, not just naming.
XML tags are just the start. Learn the full Claude workflow.
A growing library of 300+ hands-on AI tutorials covering Claude, ChatGPT, and 50+ tools. New tutorials added every week.
Approval Workflows
7 promptsMulti-Stage Approval Blueprint
8/35✨ What it does
Claude turns your approval policy into a staged Power Automate design with approve, reject, and write-back paths for each stage. You build the stages in that order and test a reject path before a real request.
<context>Our approval policy, verbatim: [PASTE THE POLICY: thresholds, approver roles, sequence, what happens on rejection]. The request arrives via [FORM / SHAREPOINT LIST / EMAIL].</context> <task>Turn the policy into a flow design. Specify each approval stage, the approval type, what happens on approve and on reject at every stage, and where the record is written.</task> <format>1. Stage table: stage, approver source, approval type (first to respond, everyone must approve, custom responses), timeout 2. Approve path and reject path per stage 3. Data written back at each transition, with the field names 4. Where a Condition is needed versus a Switch 5. Policy gaps you found, phrased as questions for the process owner</format>
Pro tip: Ask for the policy gaps. Most written approval policies are silent on what happens when the approver is the requester, and that ambiguity becomes a stuck flow in week two.
Threshold-Based Approver Routing
9/35✨ What it does
Claude writes the threshold routing logic, including a dynamic approver lookup and a safe fallback when no band matches. You paste the Switch or nested conditions and send a test request through each band.
<context>Routing rules: [PASTE THE AMOUNT BANDS AND WHO APPROVES EACH]. Requester attributes available in the flow: [LIST FIELDS: amount, department, cost center, requester email]. Approver directory lives in: [SHAREPOINT LIST / AZURE AD / HARDCODED].</context> <task>Write the routing logic. Give me a Switch or nested Condition structure plus the expression that resolves the approver email dynamically instead of hardcoding names.</task> <format>1. Recommended structure: Switch, nested Conditions, or a lookup table, with the reason 2. Expression that resolves the approver email, in a code block 3. OData filter query for the approver lookup, if a list is used 4. Fallback when no approver matches, so the flow never sends to an empty address 5. How to change bands later without editing the flow</format>
Pro tip: Push the bands into a SharePoint list rather than into Condition actions. Finance changes thresholds far more often than you want to open the designer, and a list edit needs no flow republish.
Approval Adaptive Card JSON
10/35✨ What it does
Claude writes paste-ready Adaptive Card JSON for a Teams approval, plus the expressions that read Approve, Reject, or Request info. You paste the card into Post adaptive card and wait, then test each button.
<context>I want the approval to happen inside Teams with an adaptive card. Data available at that point in the flow: [LIST THE FIELDS AND SAMPLE VALUES]. Actions the approver needs: [APPROVE / REJECT / REQUEST INFO / OTHER].</context> <task>Write the complete Adaptive Card JSON for the Post adaptive card and wait for a response action, using dynamic content placeholders where my flow data goes.</task> <format>1. Full card JSON in a code block, schema version 1.4 or lower 2. Table of every placeholder in the JSON and which flow field replaces it 3. Which action outputs to read for the response, and the expression to read the chosen action 4. How the card should render after a response 5. Two rendering pitfalls on mobile Teams to check before shipping</format>
Pro tip: Keep the schema at 1.4 or below. Teams lags behind the Adaptive Cards spec, and a card that previews fine in the designer can render blank in the Teams mobile client.
Reminder and Escalation Pattern
11/35✨ What it does
Claude designs the reminder and escalation pattern, including the expression that computes the SLA deadline in business hours and stops once someone responds. You add those steps after the approval action and test a stall.
<context>Approvals stall. SLA: [HOURS OR DAYS] to first response, then escalate to [ROLE]. Business hours: [HOURS AND TIME ZONE]. Current flow after the approval action: [DESCRIBE].</context> <task>Design the reminder and escalation pattern, including the expression that computes the SLA deadline in business hours and the loop structure that chases without spamming.</task> <format>1. Structure: parallel branch, Do Until, or Delay Until, with the recommendation and why 2. Expression computing the deadline, in a code block 3. Reminder cadence and the exact wording of reminder one and reminder two 4. Escalation trigger point and who gets notified 5. How to stop the reminder loop the moment the approval lands 6. Flow run duration limits that could bite on long SLAs</format>
Pro tip: A Do Until with a short delay burns actions fast on a multi-day SLA. Ask Claude to compare it against Delay Until with a computed timestamp, which costs a single action no matter how long the wait.
Approval Request Email HTML
12/35✨ What it does
Claude writes HTML for the Send an email (V2) action: a summary block, a details table, and the decision the approver can make from the email alone. You paste the HTML into the action and send yourself a test.
<context>Approvers say the request emails are unreadable. Fields I can include: [LIST THEM WITH SAMPLE VALUES]. The approver needs to decide from the email alone, without opening the source system.</context> <task>Write the HTML body for the Send an email (V2) action: a summary block, a details table, and the decision links, using placeholders for my dynamic content.</task> <format>1. Complete HTML in a code block, inline CSS only 2. Placeholder table: token in the HTML, flow field that replaces it 3. Subject line pattern that stays scannable in a phone notification 4. Which fields to show above the fold and which to push to the table 5. Two Outlook rendering constraints this HTML respects</format>
Pro tip: Outlook desktop strips most modern CSS. Ask for table-based layout with inline styles only, and never rely on flexbox or grid in an email your CFO reads on a laptop.
Delegation and Out-of-Office Handling
13/35✨ What it does
Claude designs delegate routing: how the flow spots an unavailable approver, who it routes to, and an audit trail that names the delegate. You add the delegation table and run an out-of-office test.
<context>Approvals stall when the approver is away. What we have: [DESCRIBE ANY DELEGATION LIST, OOF CALENDAR, OR NOTHING]. Approver directory: [WHERE IT LIVES]. Compliance requirement: [WHO MAY DELEGATE TO WHOM, IF ANY].</context> <task>Design delegation handling: how the flow decides the approver is unavailable, who it routes to instead, and how the audit trail records that a delegate acted.</task> <format>1. Availability signal options ranked by reliability, with the caveat on each 2. Delegation table schema: columns, types, sample rows 3. Lookup expression and OData filter query to resolve the active delegate, in code blocks 4. Audit fields written when a delegate approves 5. Guard against a delegation chain looping back to the original approver</format>
Pro tip: Record both the intended approver and the actual approver on the record. Auditors ask who was supposed to sign off, not just who clicked the button.
Approval Audit Log Schema
14/35✨ What it does
Claude specifies the approval audit table and the Compose expressions that fill each column from approval outputs. You create the table, paste the expressions, and check one logged decision.
<context>We need every approval decision logged for audit. Systems in play: [LIST]. Retention requirement: [DURATION]. Fields currently captured: [LIST OR NONE].</context> <task>Design the audit log table and give me the Compose expressions that populate each field from the approval action outputs.</task> <format>1. Column schema: name, type, required, example value 2. Expression per column pulling from the approval outputs, in code blocks 3. Where in the flow each write happens 4. What to capture on timeout and on flow failure, not just on approve and reject 5. Retention and archival approach for the stated duration 6. Three questions an auditor will ask that this schema answers</format>
Pro tip: Log the timeout and failure cases too. An audit trail that only records successful decisions cannot explain the request that quietly disappeared, which is exactly the one you will be asked about.
Data Sync & Integrations
7 promptsParse JSON Schema From a Sample Response
15/35✨ What it does
Claude turns the sample API response into a Parse JSON schema that tolerates nulls and missing fields, and tells you which fields stay optional. You paste the schema into Parse JSON and rerun a payload that used to break.
<context>Here is a real response from the API I am calling, with values anonymized: [PASTE THE FULL JSON]. Some fields are sometimes null or missing entirely: [LIST THEM, OR SAY NOT SURE].</context> <task>Generate the schema for the Parse JSON action, hardened so a null value does not break the run, and tell me which dynamic content tokens I will get afterwards.</task> <format>1. Complete schema JSON in a code block, ready to paste into Parse JSON 2. Nullable handling: which types you widened and why 3. Table of the dynamic content tokens this schema exposes, with the path for each 4. Expression to reach a nested value without Parse JSON, as a fallback 5. What to do when the API adds a field later</format>
Pro tip: The Use sample payload button generates a schema where every field is required, so one null value fails the whole action. Have Claude widen the types to arrays like string and null, and drop the required block.
HTTP Action Configuration From API Docs
16/35✨ What it does
Claude fills in the HTTP action from the API docs: method, URI, headers, and body, plus where to store the secret. You paste those fields, put the key in a secure input, and send one test call.
<context>API documentation extract: [PASTE THE ENDPOINT, METHOD, AUTH SCHEME, REQUIRED HEADERS, AND BODY EXAMPLE]. What I need the call to do: [DESCRIBE]. Auth material I hold: [API KEY / OAUTH CLIENT / BEARER TOKEN].</context> <task>Fill in the HTTP action for me: method, URI with encoded parameters, headers, and body, then tell me how to store the secret so it is not sitting in plain text inside the flow.</task> <format>1. Method and full URI, with query parameters shown separately 2. Headers table: key, value, and where the value comes from 3. Request body JSON in a code block 4. Secret storage options ranked: environment variable, Azure Key Vault, connection reference 5. Expected success response shape and the status codes to expect on failure 6. How to test the call before wiring it into the flow</format>
Pro tip: Never type an API key into the HTTP action's header field. It gets exported with the flow definition and shows up in run history inputs. Ask Claude for the environment variable or Key Vault pattern instead.
Field Mapping Table Between Two Systems
17/35✨ What it does
Claude builds a full source-to-destination field map and writes the transformation expression for every mismatched type. You apply the map in the flow and confirm fields that must never be overwritten stay untouched.
<context>Source schema: [PASTE COLUMN NAMES, TYPES, AND SAMPLE VALUES]. Destination schema: [PASTE THE SAME]. Direction: [ONE WAY / TWO WAY]. Fields that must never be overwritten: [LIST].</context> <task>Build the field mapping and write the transformation expression for every field where the types or formats do not line up.</task> <format>1. Mapping table: source field, destination field, transform needed, expression 2. Unmapped source fields and unmapped destination fields, each with a recommendation 3. Type mismatch list: choice to text, date to string, lookup to id, with the expression for each 4. Fields to skip on update to protect the do-not-overwrite list 5. Three rows of worked example data going through the mapping</format>
Pro tip: Choice and lookup columns are where these syncs break. A SharePoint choice column expects a plain string, a lookup expects an id, and a person field expects a claims value. Ask Claude to name the exact shape per column type.
Duplicate Prevention Key and Filter Query
18/35✨ What it does
Claude defines the dedupe key, writes the filter that checks for an existing record, and the condition logic for a proper upsert branch. You paste the filter and test a rerun that used to create a duplicate.
<context>My sync creates duplicates when it reruns. Records look like: [PASTE A SAMPLE RECORD WITH FIELD NAMES]. Destination: [SHAREPOINT LIST / DATAVERSE TABLE / SQL]. Fields that together identify a record uniquely: [LIST, OR SAY NOT SURE].</context> <task>Define the dedupe key, write the OData filter query that checks for an existing record, and give me the upsert branch structure.</task> <format>1. Recommended dedupe key and why those fields 2. Expression building the key value, in a code block 3. OData filter query string for Get items, in a code block, with special characters escaped 4. Condition expression that decides create versus update 5. Which destination column must be indexed for this filter to work at volume 6. How to clean up the duplicates already in there</format>
Pro tip: SharePoint refuses to filter on an unindexed column once the list passes 5000 items, and the error is misleading. Add the index on the dedupe column before the list grows, not after the flow starts failing.
CSV or Excel Ingestion Plan
19/35✨ What it does
Claude plans the file ingestion end to end: how rows get parsed, how bad rows are rejected, and what happens on a reprocess. You build those steps for the file that lands in [SHAREPOINT LIBRARY / ONEDRIVE / EMAIL ATTACHMENT].
<context>A file lands in [SHAREPOINT LIBRARY / ONEDRIVE / EMAIL ATTACHMENT] on a [FREQUENCY] basis. Header row and two sample rows: [PASTE THEM]. Typical size: [NUMBER OF ROWS]. Destination: [WHERE THE ROWS SHOULD GO].</context> <task>Design the ingestion flow. Cover how the rows get parsed, how bad rows are handled, and how the flow behaves when the same file arrives twice.</task> <format>1. Parsing approach recommendation: Excel connector table, split expressions, or Office Scripts, with the trade-off on each 2. If split is used, the expressions that produce the row array and the field array, in code blocks 3. Row validation rules derived from my sample, and what happens to a row that fails 4. Reprocessing behavior when the same filename arrives again 5. Volume ceiling of this design and what to change above it 6. Where to write the rejected rows so someone can fix them</format>
Pro tip: The Excel connector needs a real named table, not just a sheet of data, and it silently fails on files that other people have open. Ask Claude for the split-expression fallback so the flow does not depend on user discipline.
Batching and Throttling Strategy
20/35✨ What it does
Claude rebuilds the slow or throttled sync with pagination, loop concurrency, chunking, and per-action retry settings. You apply those settings and time one full run against the old duration.
<context>The sync processes about [NUMBER] records per run and keeps hitting throttling or timing out. Connectors used: [LIST]. Current structure: [DESCRIBE THE LOOP AND WHAT HAPPENS INSIDE IT]. Run duration today: [TIME].</context> <task>Rework it for volume. Cover pagination, loop concurrency, batching, and where a delay is genuinely needed rather than cargo cult.</task> <format>1. Where the current design breaks, action by action 2. Pagination settings to turn on and the threshold to set 3. Concurrency recommendation per loop, with the number and the reason 4. Batching approach and the expression that chunks the array, in a code block 5. Retry policy settings per action: type, count, interval 6. Expected run time after the changes, with the assumption behind the estimate</format>
Pro tip: Raising loop concurrency to 50 feels like the fix and often makes throttling worse, because the connector limit is per connection, not per loop. Ask for the connector's documented limit first, then set concurrency under it.
Delta Sync Instead of Full Refresh
21/35✨ What it does
Claude converts the full-refresh sync to a watermark-based delta sync, including how deletions are handled and how to recover a gap. You store the watermark and run two cycles to confirm only new records move.
<context>Today the flow reads every record every run: [DESCRIBE THE CURRENT APPROACH AND THE RECORD COUNT]. Source system: [NAME]. Available timestamp or version fields: [LIST, OR SAY NOT SURE]. Deletions in the source: [HARD DELETE / SOFT DELETE / NEVER].</context> <task>Convert it to a delta sync. Tell me what watermark to store, where to store it, and how to handle records deleted at the source.</task> <format>1. Watermark field choice and why, with the risk if the source clock drifts 2. Storage options for the watermark, ranked, with the failure mode of each 3. OData filter query using the watermark, in a code block 4. Expression that updates the watermark only after a successful run, in a code block 5. Deletion handling strategy for my case 6. Recovery plan for a missed window, so nothing is silently skipped</format>
Pro tip: Update the watermark at the end of the run, never at the start. If the flow fails halfway with the watermark already moved, those records are skipped forever and nobody notices until a quarterly reconciliation.
These prompts give you the what. Tutorials give you the why.
Learn when to use extended thinking, how to build Claude Projects, and workflows that compound. 300+ tutorials and growing.
Expressions & Conditions
7 promptsPlain English to Workflow Expression
22/35✨ What it does
Claude translates your plain English logic into a valid single-line Power Automate expression, not Excel and not JavaScript. You paste it into the action and test it against [PASTE ONE].
<context>I need an expression that does this: [DESCRIBE THE LOGIC IN PLAIN ENGLISH]. The input comes from [ACTION NAME AND FIELD], and a sample value looks like: [PASTE ONE]. Expected output: [DESCRIBE OR SHOW].</context> <task>Write the Power Automate expression. This is Workflow Definition Language, not Excel and not JavaScript, so use only functions the designer accepts.</task> <format>1. The expression in a code block, one line, ready to paste 2. Broken into parts, one line of explanation per function used 3. What it returns for my sample value 4. Two edge cases where it returns something unexpected 5. A simpler alternative if my logic can be restructured to avoid nesting</format>
Pro tip: Say the sample value out loud in your prompt. Half of all expression bugs are type bugs: the field you thought was a number arrives as a string, and Claude cannot see that unless you paste the actual value.
Date, Time Zone, and Business Day Expressions
23/35✨ What it does
Claude delivers a labelled pack of date, time zone, and business day expressions with the display format spelled out. You paste the ones you listed and check a due date that should skip a weekend.
<context>Time zone of the users: [ZONE]. Time zone the data arrives in: [ZONE OR UTC]. I need: [LIST WHAT YOU NEED, for example due date three business days out, month end, age of a record in hours, formatted display date].</context> <task>Give me a pack of ready expressions for each item, with the display format spelled out and daylight saving handled.</task> <format>1. One code block per requirement, each labelled 2. Format string used and what it renders, for each display expression 3. Windows time zone id to use in convertTimeZone, exact string 4. Daylight saving trap that applies to my zones 5. Which of these belong in a Compose action rather than inline, and why</format>
Pro tip: convertTimeZone wants the Windows time zone id, not the IANA one. It is Romance Standard Time, not Europe/Paris, and the error message when you get it wrong does not tell you that.
Null-Safe Expression Rewrite
24/35✨ What it does
Claude rewrites the fragile expression so a missing property or null returns a sensible default instead of failing the run. You replace the old expression and replay a record that used to error.
<context>This expression fails when a field is empty or missing: [PASTE THE EXPRESSION]. Error message: [PASTE IT]. The data sometimes looks like: [PASTE A RECORD WITH THE FIELD PRESENT AND ONE WITHOUT IT].</context> <task>Rewrite it so a missing property or a null value returns a sensible default instead of failing the run.</task> <format>1. Why the original fails, in one sentence 2. Null-safe rewrite in a code block 3. Which technique you used: coalesce, empty, the question mark accessor, or a Condition, and when each is right 4. Default value choice and its downstream impact 5. Everywhere else in a flow this same pattern usually needs applying</format>
Pro tip: The property cannot be evaluated error means the key is absent, not that the value is null, and coalesce alone will not save you. You need the question mark accessor to reach into the object safely first.
OData Filter Query Builder
25/35✨ What it does
Claude writes the Filter Query string for Get items or List rows, using internal column names and type-correct values. You paste it into the action and confirm only the records you described come back.
<context>Source: [SHAREPOINT LIST / DATAVERSE TABLE] named [NAME]. Columns with their internal names and types: [PASTE THEM]. I want to retrieve only records where: [DESCRIBE THE CRITERIA IN PLAIN ENGLISH].</context> <task>Write the Filter Query string for the Get items or List rows action, using internal column names, correct literal syntax per type, and dynamic values where my flow supplies them.</task> <format>1. Filter Query string in a code block, ready to paste 2. Column by column: internal name used, type, literal syntax rule applied 3. Dynamic parts shown as expressions, in code blocks 4. Operators this source does not support, and the workaround for each 5. Indexing requirement to make this query survive a large list 6. How to test the query fast without running the whole flow</format>
Pro tip: SharePoint internal names are not display names. A column shown as Due Date is DueDate or, worse, Due_x0020_Date. Get the internal name from the list settings URL before you write a single filter.
Collapse Nested Conditions Into One Expression
26/35✨ What it does
Claude collapses the nested Condition tree into merged expressions and a Switch, with a truth table so you can check it still matches. You rebuild the flow from that plan and test each branch in the table.
<context>My flow has [NUMBER] nested Condition actions and it has become unreadable. Here is the logic: [PASTE THE CONDITION TREE OR DESCRIBE EACH BRANCH AND ITS OUTCOME].</context> <task>Collapse it. Show me which branches merge into a single expression, which belong in a Switch, and which must stay as separate Conditions because they gate different actions.</task> <format>1. Truth table of the current logic, so we agree on what it does 2. Redundant or unreachable branches you found 3. Collapsed expression in a code block for the branches that merge 4. Switch structure for the branches that fit one, with the case values 5. Conditions that must stay separate, and why 6. Before and after action count</format>
Pro tip: Ask for the truth table first and read it before touching the flow. It is the fastest way to discover that one branch has been unreachable since 2024 and nobody noticed.
String Parsing and Extraction Expressions
27/35✨ What it does
Claude writes split, substring, and indexOf expressions for each value you need pulled from the sample texts, with guards when the pattern breaks. You paste each expression and try the variant that used to fail.
<context>I need to pull values out of text. Sample inputs, three of them showing the variation: [PASTE THEM]. What I need extracted: [DESCRIBE EACH VALUE]. The format is [ALWAYS CONSISTENT / SOMETIMES VARIES, describe how].</context> <task>Write the extraction expression for each value using split, substring, indexOf, replace, and the array functions, and make each one fail gracefully when the pattern is absent.</task> <format>1. One labelled code block per extracted value 2. What each returns for all three of my samples 3. Guard clause added for the case where the marker is missing 4. Ranking of which extractions are fragile and why 5. When to stop and use Parse JSON or an AI Builder action instead of string surgery</format>
Pro tip: substring throws a hard error when the start index exceeds the string length, and indexOf returns minus one when the marker is missing. Chain them without a guard and one odd email subject kills the run.
Array Filter, Select, and Aggregate Expressions
28/35✨ What it does
Claude replaces the Apply to each loop with Filter array, Select, and aggregate expressions that run in one action. You swap in those Data Operations actions and compare the result to the old loop.
<context>I have an array in the flow that looks like this: [PASTE THE JSON ARRAY, THREE ITEMS IS ENOUGH]. What I need: [DESCRIBE, for example keep only rows over 1000, reshape to two fields, sum a column, count by category, find the max].</context> <task>Give me the expressions and the Data Operations actions that do this without an Apply to each loop.</task> <format>1. Recommended approach per requirement: Filter array, Select, or a pure expression 2. Code block for each, showing the exact configuration or expression 3. Sum, count, and max expressions using the array functions rather than a loop and a variable 4. Result each one returns on my sample array 5. Action count saved compared with an Apply to each loop 6. Where this approach stops scaling and a loop becomes unavoidable</format>
Pro tip: An Apply to each over 500 rows costs 500 actions against your daily limit. Filter array plus Select costs two. On high-volume flows this single change is the difference between fitting the license and blowing through it.
Error Handling & Debugging
7 promptsFailed Run Diagnosis From Raw JSON
29/35✨ What it does
Claude reads the raw inputs and outputs of the failed action and names the root cause, plus a concrete fix. You apply the fix and rerun the same payload.
<context>A run failed. Here are the raw inputs of the failing action: [PASTE THE JSON]. Here are the raw outputs including the error: [PASTE THE JSON]. What the action is supposed to do: [DESCRIBE]. It worked until: [WHEN, OR SAY IT NEVER WORKED].</context> <task>Diagnose the root cause from the payloads, not from guesswork, and give me the specific fix.</task> <format>1. Root cause in one sentence 2. The exact evidence in the JSON that proves it 3. Fix, with the corrected expression or configuration in a code block 4. Why it worked before and stopped, if that applies 5. Guard to add so this failure mode becomes visible instead of silent 6. Two other actions in a typical flow that would break the same way</format>
Pro tip: Copy the raw outputs, not the friendly error banner. The banner says the request failed; the raw JSON carries the status code, the service error code, and the payload that caused it, which is what actually identifies the bug.
Try, Catch, Finally Scope Pattern
30/35✨ What it does
Claude restructures the flow into Try, Catch, and Finally scopes, sets run-after on each, and writes the result() error summary. You rebuild the scopes that way and force one failure to see the catch fire.
<context>Flow purpose: [DESCRIBE]. Actions in order: [PASTE THE LIST]. What must happen when a step fails: [NOTIFY WHO / ROLL BACK WHAT / LOG WHERE]. Currently there is no error handling at all.</context> <task>Restructure it into Try, Catch, and Finally scopes, set the run-after configuration on each, and write the expression that produces a readable error summary in the Catch block.</task> <format>1. Which actions go in which scope 2. Run-after settings per scope: has failed, is skipped, has timed out, exactly which boxes to tick 3. Error summary expression using result(), in a code block 4. What the Catch block sends and to whom, with the message text 5. What belongs in Finally versus Catch 6. How to make the run still show as Failed in history after the Catch handles it, if that is what I want</format>
Pro tip: result('Try_scope') returns an array of every action outcome inside the scope, so you can report exactly which step died rather than a generic failure. Filter it to status equals Failed before you put it in an email.
Retry Policy and Idempotency Review
31/35✨ What it does
Claude sets a retry policy per action and tells you which writes are unsafe to retry as built, then how to make those safe. You change the policies and add the check that stops a retry from creating a second record.
<context>Actions in the flow and what each one writes: [PASTE THE LIST]. Failures we see: [DESCRIBE: transient timeouts, 429s, 500s, or something else]. Records get created twice when we retry: [YES / NO / NOT SURE].</context> <task>Set the retry policy per action and tell me which actions are unsafe to retry as built, with the change that makes them idempotent.</task> <format>1. Table: action, recommended retry policy, count, interval, reason 2. Actions that must have retry turned off, and why 3. Idempotency fix per unsafe action, with the check expression or filter query in a code block 4. Which HTTP status codes are worth retrying and which are permanent 5. Total worst-case run duration once retries are set 6. How to tell from run history whether a retry saved you or hid a real bug</format>
Pro tip: Default retry is four attempts with exponential backoff, which quietly turns one duplicate-creating action into four records. Any action that creates data needs an existence check before it, or retry turned off.
Failure Alert With a Run Link
32/35✨ What it does
Claude designs a failure alert with the expression that builds a clickable link to the exact failed run, plus a way to stop alert storms. You add the alert to [EMAIL / TEAMS] and fail a test run on purpose.
<context>Nobody notices when this flow fails until a user complains. Flow name: [NAME]. Who should be alerted: [PERSON OR CHANNEL]. What they need to know to act: [DESCRIBE]. Alert channel: [EMAIL / TEAMS].</context> <task>Design the failure alert. Include the expression that builds a clickable link to the exact failed run, so the recipient lands on the run history instead of hunting for it.</task> <format>1. Expression that assembles the run URL from workflow() and the run name, in a code block 2. Alert subject line pattern that is scannable in a notification 3. Body content: what to include, what to leave out 4. Where in the flow the alert action goes and its run-after settings 5. How to avoid alert storms when the flow fails 200 times in an hour 6. Escalation rule if nobody acknowledges</format>
Pro tip: workflow() exposes the environment, workflow name, and run name, which is everything you need to construct the flow run URL. Without that link the recipient gets an alert they cannot act on from their phone.
InvalidTemplate and Expression Error Decoder
33/35✨ What it does
Claude decodes the InvalidTemplate or expression error into plain English and gives you the corrected expression. You paste the fix, save the flow, and confirm the designer accepts it.
<context>The designer refuses to save, or the run fails with this error: [PASTE THE FULL ERROR TEXT]. The expression involved: [PASTE IT]. What I was trying to do: [DESCRIBE].</context> <task>Decode the error into plain English and give me the corrected expression.</task> <format>1. What the error actually means, stripped of Microsoft phrasing 2. The specific character, function, or type that violates the rule 3. Corrected expression in a code block 4. Rule of Workflow Definition Language I broke, stated once so I recognize it next time 5. Fast way to isolate this class of error using a Compose action 6. Two similar error strings and what they mean, since they often travel together</format>
Pro tip: Drop the expression into a standalone Compose action and run the flow. Compose shows you the evaluated output in run history, which isolates the failure to the expression instead of the twelve-action chain around it.
Flow Documentation From the Definition Export
34/35✨ What it does
Claude reads the exported flow definition and writes plain English documentation: what triggers it, what it does, what it touches, plus a failure runbook. You store that doc with the solution and hand it to the next owner.
<context>Here is the flow definition JSON, exported from the solution: [PASTE IT]. Nobody currently understands this flow: [SAY WHO BUILT IT AND WHETHER THEY ARE STILL HERE].</context> <task>Read the definition and write documentation a new team member could act on: what triggers it, what it does, what it touches, and where it is fragile.</task> <format>1. One-paragraph plain English summary 2. Trigger and its conditions, decoded 3. Numbered walkthrough of the actions with each expression translated to English 4. Every external system it reads from or writes to 5. Missing error handling and unguarded assumptions you can see in the definition 6. Runbook: what to check first when it fails, and who to call</format>
Pro tip: This is the single best use of a paste-in workflow: inherited flows nobody can read. The definition JSON holds every expression and run-after setting, so Claude can explain a flow more completely than clicking through the designer.
Pre-Production Edge Case Test Plan
35/35✨ What it does
Claude writes an edge-case test plan with concrete test data, expected behavior, and a production rollback plan. You run the ugly cases first, then keep the rollback steps next to the go-live checklist.
<context>Flow about to go live: [DESCRIBE WHAT IT DOES AND WHAT IT WRITES]. Volume expected: [NUMBER PER DAY]. Blast radius if it misbehaves: [WHO OR WHAT IS AFFECTED]. Test environment available: [YES / NO].</context> <task>Write the test plan. I want the edge cases that break real flows, not the happy path, plus the specific test data to use for each.</task> <format>1. Happy path test, one line 2. Edge case table: case, test data to use, expected behavior, how to verify 3. Cases to cover: empty result set, null field, duplicate trigger, special characters, very large payload, permission denied, connector timeout 4. Concurrency test: what happens when two runs overlap 5. Rollback plan if it misbehaves in production 6. What to watch in run history for the first week and the threshold that means stop</format>
Pro tip: The empty result set is the most common production break: Get items returns nothing, first() throws, and the flow fails on the quietest day of the year. Test that case before anything else.
Free tool
Prompt Optimizer
Turn a rough idea into a structured, professional AI prompt.
Frequently Asked Questions
Prompts are the starting line. Tutorials are the finish.
A growing library of 300+ hands-on tutorials on ChatGPT, Claude, Midjourney, and 50+ AI tools. New tutorials added every week.
7-day free trial. Cancel anytime.
Related guides