Automating Purchase-Order and Invoice PDFs That Arrive by Email With Power Automate — Designing Storage, Routing, Notification, and Extraction
· Go Komura · Power Automate, Cloud Flow, Outlook, SharePoint, AI Builder, Business Automation, Email, Office, Technical Consulting
“Every morning, someone saves the PDF purchase order attached to the day’s order email into a shared folder, then transcribes it into an Excel order ledger.” It’s not unusual for a company to have someone doing this by hand for 30 minutes every day. In fact, “I want to automate processing of documents that arrive by email” is one of the more common requests we hear in Power Automate consultations.
It looks like a simple automation at first glance, but it’s also an area full of small pitfalls once you actually try to build it. Signature images get saved too, cluttering the folder with junk. The flow fires on mail that was never meant to be handled, causing bad saves. For some reason, only the emails with large attachments never get processed. This article works through the basic flow from receive-trigger to storage, routing, and notification; the pitfalls that trip people up in practice; the decision of whether to go as far as reading the document with AI Builder (automating data entry); and finally, the inherent limits of “email attachment” as a way of receiving documents in the first place.
1. The Bottom Line First
- The Office 365 Outlook connector’s “When a new email arrives (V3)” trigger has built-in filtering — folder, sender, subject filter, “only with attachments,” and more. Specify these conditions on the trigger side as much as possible, rather than in a later condition-branch action.12
- Use a shared mailbox (e.g. order@yourdomain) as the intake, rather than an individual staff member’s inbox. There’s a dedicated trigger, “When a new email arrives in a shared mailbox (V2),” which works as long as the connection account has access permission on the shared mailbox.3
- Judging by “has attachments” alone also picks up inline images such as signatures and logos as attachments. The basic fix is to filter on the
Is Inlineproperty in the attachment metadata, plus the file extension.4 - A workable setup is to store files in a SharePoint document library via the “Create file” action, and notify completion of the save through Teams or email.5
- If you go as far as reading the content (automating data entry), you use AI Builder’s document processing, but this requires separate, consumption-based credits, and the extracted results absolutely need a human-review step built in. Because the licensing structure is changing starting in 2025, check the latest information before adopting it.67
- For attachments that arrive as a password-protected ZIP (PPAP), the substantive fix is changing how they’re handed over in the first place, not trying to unzip them inside the flow.
2. Framing the Target Task — How Far to Automate “Documents That Arrive by Email”
Let’s first pin down the shape of the task this article targets.
- A partner company sends a purchase order, invoice, delivery note, or similar document as a PDF attached to an email
- A staff member opens it and saves it into a fixed location in a shared folder
- The content (partner name, amount, line items, etc.) gets transcribed into Excel or a business system
- Staff and other stakeholders are notified that “an order has come in”
There’s a spectrum of ways to receive orders — fax, email attachment, a web form, EDI. An email attachment is easier to turn into data than fax, but sits in the middle, falling short of a structured data integration like EDI or a digital invoice. This bigger picture is covered in a separate article, “What Is EDI? Making Business-to-Business Ordering Easier — From Fax, Email, and Manual Entry to Data Integration.”
Given that, and staying within the email-attachment workflow, the range that automation can realistically target breaks down into these three stages.
| Stage | What it does | Effect | Difficulty/cost |
|---|---|---|---|
| (1) Store, route, notify | Automatically save the attached PDF into a designated SharePoint folder and notify via Teams/email | Eliminates the daily “open it, save it, tell someone” task. Removes missed saves and misfiled saves | Low. Can be built from a combination of standard connectors |
| (2) Read the content (automate data entry) | Use AI Builder to extract partner name, amount, line items, etc. from the PDF and write them into a ledger or system | Reduces manual transcription. But extraction accuracy is never 100%, so a human-review mechanism is required | Medium. Requires AI Builder capacity (credits) and exception-handling design |
| (3) Change how the document is received in the first place | Migrate to a web order form, EDI, or a digital invoice, receiving structured data from the start | Eliminates the extraction step entirely | High. Requires coordination with partners and takes time |
This article’s main focus is (1) and (2). My recommendation is to start with (1) alone — it already delivers real daily benefit — and then decide on (2) based on cost-effectiveness. (3) is touched on in Chapter 7.
3. The Basic Flow — From the Receive Trigger to Storage and Notification
The basic shape is “receive trigger -> filter -> loop over attachments -> save to SharePoint -> notify.”
flowchart TD
Start([When a new email arrives in a<br/>shared mailbox V2<br/>order@yourdomain]) --> Filter[Narrow down via trigger conditions<br/>sender/subject filter, attachments only]
Filter --> Each[Apply to each<br/>loop over each attachment]
Each --> Check{Is Inline = false<br/>and extension .pdf ?}
Check -- No --> Skip[Skip processing<br/>excludes signature images, etc.]
Check -- Yes --> Save[SharePoint: Create file<br/>into a partner/year-month folder<br/>save with a filename including the received timestamp]
Save --> Notify[Post to a Teams channel or<br/>send an email notification<br/>with the storage link, sender, and subject]
Notify --> End([Done])
Save -. On failure .-> Err[Error notification<br/>alerts the administrator of the failure]
The main actions and design points are as follows.
| Step | Trigger/action used | Design point |
|---|---|---|
| Detecting arrival | When a new email arrives (V3) / When a new email arrives in a shared mailbox (V2) | Turn on both “Only with Attachments” and “Include Attachments.” The former skips mail with no attachments, and the latter includes the attachment content in the trigger’s output — they play different roles (an alternative setup for when large attachments are common is at the end of Section 4.1)1 |
| Filtering | The trigger’s From / Subject Filter | Specify the sender address or fixed subject-line phrases (like “purchase order”) on the trigger itself. Letting everything through the trigger and discarding it in a later condition still consumes a run for mail you didn’t want2 |
| Sorting out attachments | Apply to each + a condition (Is Inline / extension) | For each attachment, process only the ones where Is Inline is false and the filename ends in .pdf (details in the next chapter)4 |
| Saving | SharePoint’s “Create file” | Specify an existing document library and upload the file. Decide the folder with a rule such as “partner/year-month,” and make the filename unique by including the received timestamp5 |
| Notification | Teams’ “Post message in a chat or channel” / Outlook’s “Send an email (V2)” | Include the storage link, sender, and subject. The point of a notification is to be noticed without anyone having to go look for it, so route it to the responsible team’s channel8 |
If you decide the destination folder dynamically, using a rule like “partner/year-month,” don’t forget to also have the flow guarantee that the folder exists. The very first email from a new partner, or the first email of a new month, will find that the target folder doesn’t exist yet. The SharePoint connector has a “Create new folder” action that can create a folder path in one go5, so building in a step to prepare the folder before “Create file” prevents the whole thing from getting stuck at the save step.
Choosing SharePoint over a traditional file server as the destination is because it can be written to directly from a cloud flow, notified via a link, and combined more easily later with AI Builder or search. If circumstances force you to use an on-premises file server, going through an on-premises data gateway is an option, but it makes the configuration heavier, so where possible I’d recommend moving the whole destination to SharePoint.
The overall approach to error handling for the flow (failure notifications, checking run history) is covered in more detail in a separate article, “Automating Business Processes with Power Automate — Choosing Between Cloud Flows and Desktop Flows, and Designing Error Handling.”
4. Pitfalls and Countermeasures
The first working flow can be built in half a day. The problem starts from there — whether it holds up under real operation comes down to whether you’ve closed off the following pitfalls.
4.1 Signature and Logo Images Get Saved as “Attachments”
This is the single most common issue people bring up. A signature image or company logo embedded in the email body is technically treated as an inline attachment, so if you save based on a “has attachments” condition alone, you end up with a pile of files like image001.png saved right alongside the actual PDF.
In the Office 365 Outlook connector, the attachment metadata returned by triggers and actions includes Id, Name, Content Type, Size, and Is Inline, and these are always available regardless of the “Include Attachments” setting. Is Inline being true identifies an inline attachment.4
Address this in two layers.
- Inside Apply to each, use a condition action to pass only the ones where
Is Inlineis false - Additionally confirm that the filename ends in
.pdf(this narrows things down almost perfectly, except for the rare case where a partner pastes the document in as an image inside the body)
If you routinely receive large attachments or a large number of attachments, you can also choose a setup where you turn off “Include Attachments” on the trigger, select your targets using the metadata, and then individually retrieve only the needed attachments with the “Get attachment (V2)” action.1 Because attachment metadata (Is Inline and the name) is available regardless of the “Include Attachments” setting, the selection logic is the same either way.4 This keeps the data the trigger passes around small, so consider switching to this shape once the flow grows and attachment handling starts feeling heavy.
4.2 Narrowing Down Target Mail — a Dedicated Address Plus a Shared Mailbox
An individual’s inbox also receives a large volume of mail that has nothing to do with purchase orders. No matter how carefully you filter by sender or subject, you’ll miss things the moment a partner changes how they write their emails. The real fix is to set up an address dedicated to receiving orders and have partners send to that.
Make that intake a shared mailbox. There are two reasons.
- It decouples the mail intake from any individual staff member’s mailbox. This avoids the incident where the whole intake disappears when a staff member transfers or leaves, or where their successor can no longer see the past mail
- A shared mailbox itself needs no individual license — it’s enough for the accessing user to have a license9
Use the “When a new email arrives in a shared mailbox (V2)” trigger. As a prerequisite, the account used for the flow’s connection needs access permission on that shared mailbox. Note that it can take about two hours for a newly granted permission to be reflected on the platform side, and a Microsoft 365 group address cannot be designated as a shared mailbox.3
That said, be aware that moving to a shared mailbox doesn’t by itself eliminate the flow’s dependence on a single person. The flow’s connection (authentication to Outlook) stays tied to the account of the user who created it; a shared connection can only be used inside that specific flow, and no owner can change the credentials of a connection another owner created.10 In other words, if the account used for the connection gets disabled because that person leaves, the flow stops working even though the intake itself is a shared mailbox. Create the connection, where possible, with an operational account that isn’t tied to any particular employee’s tenure, and also set up co-owners, so that another owner can swap in their own connection and keep the flow running when the need arises.
4.3 Overwriting and Duplicate Filenames
An attachment named something like “PurchaseOrder.pdf” arrives, over and over, from multiple different partners. Saving it under the received filename as-is is guaranteed to cause filename collisions. Build the saved filename mechanically from information in the received email so it’s unique. In practice, a naming scheme like “received timestamp (down to the second) + sender domain + original filename” avoids collisions almost entirely, and also makes it easy to cross-reference back to the original email later.
There are also scenarios — like manually rerunning a flow for testing after fixing it — where the same email gets processed twice. With timestamp-based naming, the only thing that gets written to in that case is another file with the same name derived from that same email, so it never overwrites or deletes a file belonging to a different partner. That said, the second write to the same name is still a collision in its own right (whether it results in an overwrite or a failure, the content is identical), so if you want to actually detect duplicate processing itself, including the message ID from the trigger’s output in a column of your destination list, or in the filename, lets you mechanically check whether something has already been processed.1
4.4 Detecting Missed Mail — Can You Notice “Mail the Trigger Never Fired On”?
This gets overlooked easily, but the receive trigger is not infallible. The documentation explicitly calls out the following cases.
- Mail whose total size exceeds the smaller of the limit set by an Exchange administrator or 50 MB is skipped by the trigger. Protected (encrypted) mail, and mail with a malformed body or attachments, can also be skipped1
- If a large volume of mail arrives at the same time, a system-side limit can rarely cause the trigger to miss mail11
In other words, there can be mail where the flow “never ran at all,” rather than “ran and errored.” Monitoring only for error notifications won’t catch this kind of miss. A realistic countermeasure, alongside success/failure notifications from the flow, is to keep a routine of a person periodically checking the inbox (have the flow move processed mail into a folder, so anything still sitting in the inbox is recognizable as unprocessed). The size limit on the mail itself is governed by settings on the Exchange Online side — the default for incoming mail is 36 MB, and an administrator can adjust it anywhere from 1 to 150 MB. For partners you regularly exchange large attachments with, consider a different handoff method, such as the file-sharing link mentioned below.12
5. Whether to Go As Far As Reading the Content (Automating Data Entry) — AI Builder’s Document Processing
Once storage and notification are running smoothly, the next thing people want is “automate all the way to reading the PDF’s content and writing it into the ledger.” That’s where AI Builder’s document processing comes in.
5.1 The Prebuilt Model and Custom Models
AI Builder ships with a prebuilt invoice-processing model for invoices. It can extract common fields — invoice number, invoice date, due date, partner name, total amount, line items — straight out of the box with no model training required, and Japanese is among the supported languages. Input can be JPEG/PNG/PDF, with a file size limit of 20 MB.13
For documents whose layout differs by company, like purchase orders, or when you want to pull fields beyond the standard ones even from an invoice (your own internal management number, say), you build a document processing custom model. Choose from three types — “structured template document,” “freeform document,” or “invoice (an extension of the prebuilt model)” — group documents that share the same layout into a collection, upload a minimum of 5 sample documents per collection, and train it by tagging the fields and tables you want to extract.14
Wiring either into a flow is straightforward: for the invoice-processing model, use the “Extract information from invoices” action; for a custom model, use the “Process document” action; in both cases you just hand it the file content of the PDF stored in SharePoint.158
5.2 Accuracy and Exception Handling — Route to Human Review by Confidence Score
The single most important thing in automating content reading is to design around the assumption that “extraction can get things wrong.” AI Builder’s extraction results come with a confidence score between 0 and 1 for each field. In practice, you branch the flow on that score.15
- High score (e.g. 0.9 or above) -> write straight to the ledger, and notify as “processed automatically”
- Low score -> write to the ledger flagged as “needs review,” and notify a staff member to “please check this item”
Microsoft’s own documentation walks through an example that combines the prebuilt model with a custom model, falling back to the other model when the confidence score comes back low.13 Designing around “if it can all be read automatically, great, and a person only looks at what couldn’t be” means you never have to chase 100% accuracy, which substantially lowers the barrier to adoption.
5.3 Licensing and Credits — This Absolutely Needs Checking Beforehand
Every AI Builder action consumes consumption-based capacity each time it runs. This capacity has traditionally been called AI Builder credits, obtained either through an AI Builder capacity add-on (1 million credits per add-on per month) or in smaller amounts bundled with a premium license such as Power Automate Premium (5,000 credits with Power Automate Premium). Credits are pooled at the tenant level and allocated to environments for use. Without any capacity allocated to an environment, the flow stops with an error such as NoCapacity.6
However, this structure is currently in a transition period. A phased retirement of AI Builder credits was announced in October 2025: the seed credits bundled with premium licenses will end on November 1, 2026, and new customers can no longer purchase the AI Builder capacity add-on, instead purchasing Copilot credits. AI Builder’s own functionality can still be used with Copilot credits, but for cloud flows, the priority is to consume AI Builder credits first and only draw on Copilot credits once those run out.716
In short: going as far as content reading costs extra, and that cost structure is being rewritten right now. Here’s a rough guide for the adoption decision.
| Situation | Judgment |
|---|---|
| Few documents per month, and transcription only takes a few minutes | Skip content reading — storage and notification (Chapter 3) alone is enough |
| Mostly invoices, high volume, transcription is a real burden | Start with the prebuilt invoice-processing model. No training needed, so you can check accuracy right away13 |
| Mostly documents with a custom layout, such as purchase orders | A document processing custom model. Factor in that more layout variety means more training and maintenance effort14 |
| Wanting to feed extraction results straight into a core system unattended | Not recommended. Always insert a human-review branch based on the confidence score |
| Many partners, with document layouts that keep growing | Before you wear yourself out maintaining the extraction, consider changing how documents are received in the first place (Chapter 7) |
6. When a Password-Protected ZIP (PPAP) Arrives — This Isn’t a Problem for the Flow to Solve
“Our attachments arrive as password-protected ZIP files — can the flow unzip them?” is another question that comes up all the time. The short answer: don’t try to solve this inside the flow.
The whole password-protected-ZIP practice is built around the assumption that the password arrives in a separate email, gets read by a human, and gets typed in by hand to open the file. Both the timing and the format of the password notification are entirely up to the sender, and none of this was designed with machine processing in mind. Force this into automation, and you end up building genuinely risky machinery you never needed — parsing password emails, storing passwords — that you’d otherwise never have had to build.
For that matter, PPAP has little value as a security measure to begin with, given that the key and the package travel over the same channel, and its bigger harm is letting things sail straight past the recipient’s virus scanning. This problem, along with alternatives (file-sharing links, and so on), is covered in more detail in a separate article, “Why Is PPAP Bad for Email Security? What’s the Right Way to Do It?.” In the context of automation, documents arriving via PPAP top the list of things you should be negotiating to change how you receive. And thanks to the broader move away from PPAP, a request to a partner along the lines of “for the sake of automated processing, could you send a plain PDF attachment or a file-sharing link instead of a password-protected ZIP” tends to land more easily than it used to.
7. Beyond This — the Limits of Email-Attachment Workflows and a Phased Migration
Once storage, notification, and content reading are all in place, what remains is the inherent limit of the fact that you’re exchanging documents by email attachment in the first place.
- There are as many document layouts as there are partners, and maintaining the extraction model gets heavier the more partners you have
- Extraction accuracy never reaches 100%, so the human-review step never goes away
- Mail can fail to arrive (oversized, flagged as spam), so monitoring for missed mail never goes away either
No amount of polishing the Power Automate design makes any of this disappear. As long as the starting point of the process is “sending unstructured data (a PDF) addressed to a human,” reading it and checking it remain an unavoidable cost. That’s exactly why it’s worth keeping, on a medium-term horizon, the direction of receiving structured data from the start — a phased move toward a web order form, EDI, or, for invoices, a digital invoice (Peppol / JP PINT).
The migration doesn’t need to be an all-at-once cutover. It’s realistic to run a dual-track setup: move the partners who are willing over to the new way of receiving first, and keep handling the rest through email attachments plus automated processing. This kind of phased migration design is covered in “Moving Fax Orders to the Web — Designing a Dual-Operation Period and the Practicalities of a Phased Migration,” and the mechanics of digital invoicing are covered in “What Is a Digital Invoice? How Is It Different From ‘Emailing a PDF Invoice’?.” I’d position the flow described in this article as the mechanism that supports “the portion still received by email attachment” during that transition period.
8. Summary
Processing purchase-order and invoice PDFs that arrive by email is on the more introductory end of Power Automate automation topics, but the points you need to nail down to make it hold up under real operation are clear.
First, make the intake a dedicated address on a shared mailbox, and push the filtering conditions onto the trigger itself. Sort attachments in two layers — Is Inline plus the extension — to exclude signature images. Make the filename unique based on the received timestamp, and, working from the premise that the trigger can skip mail (over 50 MB, encrypted mail, a burst of simultaneous mail), keep a routine in place that lets you notice anything missed. That’s stage one.
If you go as far as content reading, use either AI Builder’s prebuilt model or a custom model paired with confidence-score branching, and check the cost of consumption-based credits and the licensing structure mid-transition beforehand. And don’t try to unzip password-protected ZIPs inside the flow — treat them as a target for negotiating a change in how they’re received. Once the inherent limits of the email-attachment format itself come into view, consider a phased migration to a web form, EDI, or a digital invoice. Work through it in this order, and it’s an area you can grow without major rework along the way.
Related Articles
- Automating Business Processes with Power Automate — Choosing Between Cloud Flows and Desktop Flows, and Designing Error Handling
- Why Is PPAP Bad for Email Security? What’s the Right Way to Do It?
- What Is EDI? Making Business-to-Business Ordering Easier — From Fax, Email, and Manual Entry to Data Integration
- Moving Fax Orders to the Web — Designing a Dual-Operation Period and the Practicalities of a Phased Migration
- What Is a Digital Invoice? How Is It Different From “Emailing a PDF Invoice”?
Related Consulting Areas
Komura Software LLC handles consulting on automating email and document processing with Power Automate, as well as phased-migration planning for digitizing order and invoicing workflows.
References
-
Microsoft Learn, Office 365 Outlook - Connectors. On the parameters of the “When a new email arrives (V3)” trigger (Folder / From / Only with Attachments / Include Attachments / Subject Filter, etc.), and the trigger skipping mail that exceeds the smaller of an Exchange administrator’s configured limit or 50 MB, as well as protected mail. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Trigger a cloud flow based on email properties. On the filtering properties available on the “When a new email arrives (V3)” trigger, and checking properties on the trigger side rather than in a condition branch to avoid consuming a run for out-of-scope mail. ↩ ↩2
-
Microsoft Learn, Office 365 Outlook - Connectors (Working with attachments). On attachment metadata (Id / Name / Content Type / Size / Is Inline) always being returned regardless of the “Include Attachments” setting, and the
Is Inlineproperty identifying inline attachments. ↩ ↩2 ↩3 ↩4 -
Microsoft Learn, Microsoft SharePoint Connector in Power Automate. On the SharePoint connector’s “Create file” action uploading a file into an existing document library, and the “Create new folder” action creating a folder or folder path. ↩ ↩2 ↩3
-
Microsoft Learn, Licensing and AI Builder credits. On how AI Builder credits are obtained (1 million credits per capacity add-on, 5,000 credits bundled with Power Automate Premium), pooling at the tenant level and allocation to environments, errors such as NoCapacity when capacity is insufficient, and seed credits ending on November 1, 2026. ↩ ↩2
-
Microsoft Learn, End of AI Builder credits. On the phased retirement of AI Builder credits announced in October 2025, and AI Builder’s functionality continuing to be usable via Copilot credits. ↩ ↩2
-
Microsoft Learn, Use a document processing model in Power Automate. On how to use the “Process document” action in a cloud flow, and an example configuration that notifies extraction results via Teams’ “Post message in a chat or channel” action. ↩ ↩2
-
Microsoft Learn, Share a cloud flow. On a flow’s connection being tied to the user who created it, a shared connection only being usable within that flow, co-owners being unable to change the credentials of a connection created by another owner, and adding co-owners. ↩
-
Microsoft Learn, Office 365 Outlook - Connectors (Known issues and limitations with triggers). On a system-side limit rarely causing the email trigger to miss mail when a large volume arrives simultaneously. ↩
-
Microsoft Learn, Exchange Online limits. On the mailbox’s default maximum message size (35 MB sending / 36 MB receiving), and administrators being able to set a custom limit between 1 and 150 MB. ↩
-
Microsoft Learn, Invoice processing prebuilt AI model. On the extraction fields of the prebuilt invoice-processing model, its supported languages (including Japanese), input formats (JPEG/PNG/PDF, 20 MB or smaller), and an example configuration that falls back to a custom model for fields with a low confidence score. ↩ ↩2 ↩3
-
Microsoft Learn, Create a document processing custom model. On the document types for a document processing custom model (structured template document / freeform document / invoice), the requirement of a minimum of 5 sample documents per collection, and defining the fields and tables to extract. ↩ ↩2
-
Microsoft Learn, Use the invoice processing prebuilt model in Power Automate. On how to use the “Extract information from invoices” action in a cloud flow, and a confidence score between 0 and 1 being returned for each field. ↩ ↩2
-
Microsoft Learn, Power Platform licensing FAQs. On a cloud flow’s AI Builder features consuming AI Builder credits first, drawing on Copilot credits once those are absent or exhausted. ↩
Related Articles
Recent articles sharing the same tags. Deepen your understanding with closely related topics.
Designing Scheduled Flows in Power Automate — Month-End Processing, Business-Day Checks, and Reminders in Practice
A practical guide to automating recurring processes with Power Automate's Recurrence trigger. Covers the trap of the default time zone be...
Building an Approval Workflow in Power Automate — Digitizing Paper and Email-Based Approval Requests
A practical guide to digitizing paper approval forms and email-attached Excel requests with Power Automate: the types of approval actions...
Migrating Excel VBA Macros to Power Automate — What to Replace with Office Scripts, and What to Leave as VBA
A guide to whether Excel VBA macros can migrate to Power Automate, covering what Office Scripts can replace, what only VBA can still do, ...
Power Automate Error Handling and Retry Design — Preventing 'The Flow Was Working, Then It Just Stopped'
A collection of design patterns for preventing Power Automate flows from silently stopping without anyone noticing. Based on Microsoft Le...
Automating Business Processes with Power Automate — Cloud Flows, Desktop Flows, and Robust Error Handling
A practical design guide to Power Automate: the difference between cloud flows and desktop flows, when to use PowerShell or VBA instead, ...
Related Topics
These topic pages place the article in a broader service and decision context.
Windows Technical Topics
Topic hub for KomuraSoft LLC's Windows development, investigation, and legacy-asset articles.
Where This Topic Connects
This article connects naturally to the following service pages.
Legacy Asset Reuse & Migration Support
We help plan staged migration while continuing to reuse COM / ActiveX / OCX assets, native code, and 32-bit dependencies.
Frequently Asked Questions
Common questions about the topic of this article.
- Can a Power Automate flow be triggered by mail arriving in a shared mailbox?
- Yes. The Office 365 Outlook connector has a dedicated trigger, 'When a new email arrives in a shared mailbox (V2),' which can drive a flow from mail arriving at a shared address used for order intake. This requires the account used for the connection to have access permission on that shared mailbox. Be aware that it can take about two hours for a newly granted permission to take effect, and that a Microsoft 365 group address cannot be designated as a shared mailbox. Receiving mail through a shared mailbox rather than an individual staff member's inbox makes the intake easier to hand over, but because the flow's connection itself is still tied to the account of the user who created it, you also need to decide how that connection account is managed, along with setting up co-owners.
- Why do images from an email signature end up saved as attachment files?
- A signature image or logo embedded in the email body is technically treated as a type of attachment (an inline attachment). Processing based only on a 'has attachments' condition ends up saving the signature's PNG or GIF right alongside the actual PDF. The fix is to use the Is Inline metadata that the Office 365 Outlook connector returns for every attachment as a condition, processing only the ones where Is Inline is false. Layering on a check that the filename extension is .pdf narrows the target down even more reliably.
- What do I need to automate reading the PDF's contents with AI Builder?
- AI Builder has a prebuilt invoice-processing model that extracts fields such as invoice number, date, and total amount from invoices, and it supports Japanese-language invoices. For documents with a custom layout, such as purchase orders, you use a document processing custom model, trained with sample documents (a minimum of 5 per layout). Running it requires consumption-based capacity such as AI Builder credits, and the flow errors out if the environment has no capacity allocated. Note also that a phased retirement of AI Builder credits was announced in October 2025, shifting things toward Copilot credits going forward, so check the latest licensing structure before adopting this for a new build.
- Can a flow also process attachments that arrive as a password-protected ZIP (PPAP)?
- A password-protected ZIP is fundamentally at odds with automated processing, and you should not design a flow around the assumption of unzipping it internally. The whole practice of sending the password in a separate email that a human has to read before the file can be opened was never designed with machine processing in mind. You can save the ZIP as-is somewhere a person can open it, but that doesn't get you any closer to automating data entry or extraction. Realistically, the substantive fix is negotiating with the sender to stop using PPAP — that is, changing how the files are handed over in the first place. PPAP has plenty of security problems of its own too, so a separate article laying those out can also serve as ammunition for that negotiation.
Author Profile
Profile page for the article author.
Go Komura
Representative of KomuraSoft LLC
Focused on Windows software development, technical consulting, and investigations into failures that are difficult to reproduce.
Public links