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

ApproachOwnerComplexity
Power Automate + HTTPCitizen developerLow
Azure Bot FrameworkEngineeringMedium
Teams workflow webhook → middlewareEngineeringMedium

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:

  1. Parse signer email from activity text
  2. Fetch file from Teams file API if attached
  3. Upload or pass URL to Atlas
  4. 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

  1. Register Azure AD app for bot or Power Automate connector
  2. Grant Microsoft Graph permissions for reading channel files if attachments trigger sends
  3. Allowlist outbound HTTPS to atlaswork.ai on corporate proxy
  4. Store Atlas API key in Azure Key Vault referenced by bot app settings
  5. Publish bot manifest to Teams admin center for org-wide install
  6. Run pilot in single private channel before #sales wide rollout

Message commands

Support explicit commands to reduce misfires:

CommandAction
sign helpUsage 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.

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.