Microsoft Teams contract signing bot
Teams users want signing triggers where they already discuss deals. Atlas does not ship a Teams app in Microsoft AppSource. You build a bot or Power Automate flow that calls the Atlas API and posts adaptive cards with review links.
> Share: "Teams bot posts review URL. Signers still use Atlas email and sign pages."
Options
| Approach | Owner | Complexity |
|---|---|---|
| Power Automate + HTTP | Citizen developer | Low |
| Azure Bot Framework | Engineering | Medium |
| Teams workflow webhook → middleware | Engineering | Medium |
Power Automate fits quick internal pilots. Bot Framework fits custom cards and thread tracking.
Power Automate pattern
Trigger: Message contains keyword or SharePoint file uploaded.
HTTP action POST:
URI: https://atlaswork.ai/api/envelope
Method: POST
Headers:
Authorization: Bearer @{variables('AtlasKey')}
Content-Type: application/json
Body:
{
"document_url": "@{triggerOutputs()?['body/documentUrl']}",
"webhook_url": "https://prod-xx.region.logic.azure.com/...",
"parties": [
{ "email": "@{triggerOutputs()?['body/email']}", "name": "Signer", "role": "Customer" }
]
}
Post condition: Teams "Post card in chat" with Open URL action to review_url.
Bot Framework pattern
Register bot in Azure Bot Service. On sign contract command:
- Parse signer email from activity text
- Fetch file from Teams file API if attached
- Upload or pass URL to Atlas
- Reply with HeroCard button linking to review
Store conversation.id and activity.id in database for webhook thread replies.
Webhook to Teams
Atlas envelope.signed hits your Azure Function. Function uses Bot Connector API:
await connectorClient.conversations.sendToConversation({
type: 'message',
text: `Contract signed. Download: ${signedUrl}`,
}, conversationReference);
Compliance and tenant admin
Teams admin must allow custom apps or Power Automate HTTP connectors to external URLs (atlaswork.ai). Document data flow for security review: PDF leaves Teams to Atlas for signing, signed PDF returns via webhook.
Adaptive card example
Post review link with Adaptive Card action Action.OpenUrl titled "Review contract". Include envelope id in card text for support correlation when reps screenshot failures.
Guest access
External signers do not need Teams licenses. They sign via Atlas email links. Only internal employees need the bot or Power Automate visibility into review URLs.
Lifecycle notifications
Configure bot to post on envelope.sent, envelope.signed, and envelope.declined separately so channel noise matches urgency. Declined deals may need @mention to account owner.
Recording retention
Teams meeting recordings are separate from signed PDF artifacts. Store signed PDF from Atlas webhook in SharePoint records library linked from the Teams channel wiki for single source of truth.
App registration checklist
- Register Azure AD app for bot or Power Automate connector
- Grant Microsoft Graph permissions for reading channel files if attachments trigger sends
- Allowlist outbound HTTPS to
atlaswork.aion corporate proxy - Store Atlas API key in Azure Key Vault referenced by bot app settings
- Publish bot manifest to Teams admin center for org-wide install
- Run pilot in single private channel before
#saleswide rollout
Message commands
Support explicit commands to reduce misfires:
| Command | Action |
|---|---|
sign help | Usage text |
sign status <envelope_id> | Poll Atlas status API |
sign void <envelope_id> | Call void API if policy allows |
Log command issuer Teams user id alongside Atlas envelope id for audit.
FAQ
Sign inside Teams meeting? Signers use Atlas links, not Teams stage embed by default.
PDF and DOCX? Both supported on Atlas create.
Sequential signers? Pass ordered parties. Bot message can show progress from status API.
Vs Slack bot? Same Atlas API patterns. See Slack contract signing.
MCP for sales leaders? Executives may prefer Claude MCP while ops uses Teams bot triggers.
Related
- Slack contract signing API
- Nintex e-sign (Microsoft stack alternative)
- E-signature API
Extended FAQ
Teams free vs paid? Bot works in both if admin installs app. Power Automate may need premium connectors.
Government GCC tenant? Confirm Atlas URL allowlisting with tenant admin early.
Private channels only? Recommended for pilot before posting review URLs in public sales channels.
Bot impersonation? Bot posts as app identity. Clear in card footer that Send happens on Atlas.
Meeting vs async sign? Async email sign is default. Live meeting sign still uses Atlas link in chat.
Change management
Publish bot release notes in Teams when review URL format or command syntax changes. Sales teams bookmark review links during busy quarters. Breaking changes without notice create unnecessary IT tickets.
Include support alias in bot help text so reps know where to escalate 402 credit errors without paging engineering.
Run quarterly drill: post test review URL in sandbox channel, complete sign, confirm webhook updates deal record within SLA defined in runbook.
Track median time from bot command to Send click as KPI for sales enablement, not only time to signed PDF.