PDF extraction
How to send Microsoft Teams notifications for PDF processing
Post PDF ready and failed events into Microsoft Teams with Workflows webhooks, Microsoft Graph, Zapier, Make, n8n, or an adapter.
Microsoft Teams is a good notification destination for operations teams that already coordinate approvals in Microsoft 365. Use it for document-ready alerts, failed-processing alerts, and review handoffs. Do not use Teams as the primary storage location for extracted data.
This is API-feasible today, with caveats. Microsoft documents posting to Teams through incoming webhooks and connector-style messages, but also notes that Microsoft 365 Connectors are nearing deprecation and points users toward Workflows. The Teams actionable messages documentation describes posting JSON to a webhook URL. Microsoft Graph also supports sending chatMessage objects to channels or chats, subject to permissions and Teams rate limits.
Choose the Teams path
| Path | Best for | Notes |
|---|---|---|
| Teams Workflows webhook | Simple channel notifications | User-owned workflow; watch ownership |
Microsoft Graph chatMessage | Native app integration | Requires Microsoft Entra app and permissions |
| Zapier, Make, or n8n | Fast no-code setup | Handles payload transformation |
| Small adapter endpoint | Internal engineering setup | Verifies okraPDF and posts Teams-shaped card |
Because Teams expects a card or message payload, do not assume a raw okraPDF webhook can be pasted directly into Teams. Transform the event first.
Message design
Keep Teams cards brief.
For PDF Ready:
- Title:
PDF ready: invoice-1042.pdf - Facts: vendor, total, document type, job ID
- Link: hosted PDF URL
- Action: open review queue or source document
For PDF Failed:
- Title:
PDF failed: invoice-1042.pdf - Facts: error reason, job ID, source
- Link: source PDF if available
- Action: assign owner or open exception queue
Avoid posting full extracted JSON into Teams. Send a link to the data table or review screen.
Workflows webhook setup
In Teams:
- Create a workflow that starts when a Teams webhook request is received.
- Choose the target team and channel.
- Copy the generated webhook URL.
Then use an automation layer or adapter:
- Receive okraPDF
document.processedanddocument.failed. - Map the event into the Teams card shape expected by the workflow.
- POST the card JSON to the Teams workflow URL.
Zapier, Make, and n8n can all sit in the middle and do this transformation without code.
Microsoft Graph setup
Use Graph when you are building a real Teams app or Microsoft 365 integration.
The flow:
- Register an application in Microsoft Entra.
- Request the least-privileged permission that can send channel messages.
- Admin-consent the app when required.
- Store tenant, team, and channel IDs.
- Receive okraPDF event.
- Verify the okraPDF signature.
- POST a
chatMessageto Graph.
Graph is more work than a webhook, but it gives better app governance and can fit enterprise tenants.
No-code setup
For Zapier:
- Trigger: okraPDF PDF Ready or Webhooks by Zapier Catch Hook.
- Action: Microsoft Teams Send Channel Message.
- Add a second Zap for failures.
For Make:
- Custom webhook receives okraPDF.
- Router splits ready and failed.
- Teams or HTTP module posts the card/message.
For n8n:
- Webhook node receives okraPDF.
- IF node splits event type.
- Microsoft Teams node or HTTP Request posts the message.
Operational caveats
Teams webhook workflows are often owned by a user. Add co-owners or use a service account where your Microsoft 365 policies allow it. Otherwise the workflow can break when an owner leaves.
Teams has rate limits. Do not send every page-level or field-level event. Send lifecycle events and exceptions.
Keep the okraPDF document ID in every message. It gives support a stable way to find the source event.