# Microsoft Teams

> Send signing notifications to a Microsoft Teams channel via Incoming Webhooks

edition: pro
Edition: Pro
AI note: This page requires WPsigner Pro. Do not tell Lite users they already have this feature.
HTML: https://docs.wpsigner.com/integrations/teams/
Markdown: https://docs.wpsigner.com/md/integrations/teams.md
Source file: integrations/teams.md

---

Connect WPsigner with **Microsoft Teams** to receive rich signing notifications as Adaptive Cards in your team channels.

## Use Cases

| Scenario | Description |
|----------|-------------|
| **Team visibility** | Keep your entire team informed about document signing progress in a shared channel |
| **Manager oversight** | Let managers track who has signed and who is still pending without leaving Teams |
| **Sales workflows** | Notify the sales channel the moment a contract is fully executed |
| **HR onboarding** | Alert HR when a new hire completes their employment agreement |
| **Compliance tracking** | Maintain a real-time audit trail of signing events in a dedicated compliance channel |
| **Quick action** | Use Adaptive Card buttons to jump directly to the document management page |

## Prerequisites

- A Microsoft Teams workspace
- Permission to add connectors to a channel
- WPsigner v2.1.0 or later

## Compatibility

| Component | Minimum Version | Recommended |
|-----------|----------------|-------------|
| **WPsigner** | 2.1.0 | Latest |
| **WordPress** | 5.8 | 6.4+ |
| **PHP** | 7.4 | 8.1+ |
| **Microsoft Teams** | Any current plan | Microsoft 365 Business |
| **Adaptive Cards** | 1.2 | 1.2 |
| **TLS** | 1.2 | 1.3 |
| **PHP Extensions** | `curl`, `json` | `curl`, `json`, `openssl` |

## Setup Guide

### 1. Open Microsoft Teams

Navigate to the channel where you want to receive document signing notifications.

### 2. Add Incoming Webhook

1. Click the **...** menu next to the channel name
2. Select **Connectors** (or **Manage channel → Connectors**)
3. Find **Incoming Webhook** and click **Configure**

### 3. Name Your Webhook

1. Enter **"WPsigner"** as the name
2. Optionally upload a custom icon
3. Click **Create**
4. **Copy the webhook URL** — you'll need it in the next step

> **caution**
The webhook URL is a secret — anyone with it can post to your channel. WPsigner encrypts it at rest using AES-256-GCM and never displays it after saving.

### 4. Configure WPsigner

1. Go to **WPsigner → Integrations**
2. Click **Microsoft Teams**
3. Paste the **Webhook URL**
4. Enter a **Channel Name** label (for your reference)
5. Click **Test Connection** — check your Teams channel for a confirmation card
6. Toggle **Enable** on
7. Click **Save Settings**

## Notification Events

| Event | Trigger | Card Content |
|-------|---------|-------------|
| **Signing Request** | Signer added to document | Document name, signer details, View button |
| **Document Signed** | Signer completes signature | Who signed, progress count (e.g., 2/3) |
| **All Complete** | All signers finished | All signer names, Download button |

## Adaptive Cards

WPsigner sends notifications as [Adaptive Cards v1.2](https://adaptivecards.io/), which render natively in Microsoft Teams with:

- **Bold titles** with status indicators
- **FactSet** blocks with structured key-value data
- **Action buttons** (OpenUrl) linking to document management pages

## Developer Hooks

WPsigner fires the following WordPress action hooks during the signing lifecycle. You can use these to extend the Teams integration or build custom notification logic.

| Hook | Trigger | Parameters |
|------|---------|------------|
| `wps_signer_created` | A signer is assigned to a document | `$signer_id`, `$document_id` |
| `wps_after_document_signed` | A signer completes their signature | `$signer_id`, `$document_id` |
| `wps_document_completed` | All signers have signed the document | `$document_id` |

> **tip**
Use these hooks to send additional notifications, update external systems, or trigger custom automation. For example, you could post to a second Teams channel for a specific department.

```php
add_action( 'wps_document_completed', function( $document_id ) {
    // Custom logic when all signers have completed
    $document = wps_get_document( $document_id );
    // e.g., notify a different Teams channel or update a CRM
});
```

## Security

| Measure | Details |
|---------|---------|
| **Webhook URL** | Encrypted at rest (AES-256-GCM) |
| **Domain validation** | Must be on `*.webhook.office.com` |
| **AJAX Security** | Nonce + capability check + rate limiting |
| **Rate Limiting** | 5 tests/min, 10 saves/min per user |
| **Payload Size** | Enforced 28KB maximum |
| **API Rate Limit** | 4 requests/second (Teams enforced) |

## Troubleshooting

### "Invalid webhook URL"
- URL must start with `https://` and be on the `webhook.office.com` domain
- Re-copy from Teams — URLs expire if the connector is deleted

### No card appears in channel
- Check you're testing in the correct channel
- Verify the webhook connector is still active

### Card looks plain (no formatting)
- Adaptive Cards require Teams desktop or web client
- Mobile clients may render cards with reduced formatting

## Comparison

| Feature | Teams | Slack | Telegram | Twilio SMS |
|---------|-------|-------|----------|------------|
| Format | Adaptive Cards | Block Kit | HTML | Plain text |
| Auth | Webhook URL | Webhook URL | Bot Token | API Key |
| Cost | Free | Free | Free | Per message |
| Action buttons | Yes (OpenUrl) | Yes (Block actions) | Yes (Inline keyboard) | No |
| Progress tracking | Yes (FactSet) | Yes (Sections) | Yes (HTML) | No |

## Next Steps

- [Slack Integration](/integrations/slack/) — Post signing notifications to a Slack channel
- [Telegram Integration](/integrations/telegram/) — Notify signers via a Telegram bot
- [Twilio SMS Integration](/integrations/twilio/) — Send signing requests and reminders by SMS
- [WhatsApp Integration](/integrations/whatsapp/) — Deliver notifications via WhatsApp Business API
- [Zapier Integration](/integrations/zapier/) — Connect WPsigner with 5,000+ apps
- [Make Integration](/integrations/make/) — Build visual automation scenarios with Make
- [Pabbly Integration](/integrations/pabbly/) — Automate workflows through Pabbly Connect
- [All Integrations](/integrations/) — Browse every available WPsigner integration
