Integration Guide

Send Contractor COI and License Alerts to Microsoft Teams — Free with Microsoft 365

Microsoft Teams contractor compliance alerts send automatic notifications to your project channels when a subcontractor's COI, trade license, or W-9 status changes — using Power Automate, which is included with most Microsoft 365 plans. No extra subscription, no third-party account, setup in about 10 minutes.

What you can automate

Post to a Teams channel when a COI hits 30 days out
Alert your project channel when a subcontractor's license expires
Alert your team when a new sub doesn't have a W-9 on file
Route different event types to different Teams channels
Include contractor name, expiry date, and days remaining
Alert project managers on mobile — Teams notifications work on iOS and Android
No extra subscription — runs on your existing Microsoft 365 plan

How it works

Power Automate is included with Microsoft 365 Business Basic and above. There's no separate subscription, no API rate limits for this use case, and the flow runs under your existing Microsoft account — so your IT team doesn't need to approve a new vendor. If the flow fails, Power Automate emails you and retries automatically.

Before you start

  • 1 A TrackMyVendor account with owner access
  • 2 A Microsoft 365 account with Power Automate access (included in most plans)
  • 3 A Teams channel where you want compliance alerts to land
1

Create a Power Automate flow with an HTTP trigger

Go to power.automate.microsoft.com. Click Create → Automated cloud flow. Name the flow (e.g., "TrackMyVendor Compliance Alerts"), then search for and select When an HTTP request is received as the trigger.

Power Automate setup path:

Create → Automated cloud flow → HTTP → When an HTTP request is received → Create

Click Save — Power Automate generates the HTTP POST URL after the first save. You'll see it in the trigger step as "HTTP POST URL".

2

Copy the Power Automate URL and add it to TrackMyVendor

Copy the HTTP POST URL from the Power Automate trigger step. In TrackMyVendor, go to Settings → Integrations → Webhook Endpoints and click Add Endpoint.

URL Paste the Power Automate HTTP POST URL
Label Something like "Power Automate — Teams Alerts"
Events Select the contractor compliance events to receive — COI expiration alerts, license monitoring, W-9 missing, etc.

Click Add Endpoint. TrackMyVendor shows the signing secret once — you won't need it for the basic setup, so skip to Step 3. Your IT team can add signature verification later using the optional section at the bottom of this page.

3

Define the JSON schema so Power Automate maps the fields

In the HTTP trigger step, click "Use sample payload to generate schema". Paste the TrackMyVendor payload below and click Done. Power Automate will auto-map all fields as usable dynamic content tokens in the next step.

{
  "event": "contractor.coi_expiring",
  "created_at": "2026-05-08T14:00:00Z",
  "data": {
    "vendor_id": 42,
    "vendor_name": "Apex Electrical LLC",
    "organization_id": 7,
    "expiration_date": "2026-06-01",
    "days_left": 24,
    "window": "30d"
  }
}

After saving, you'll be able to insert vendor_name, days_left, expiration_date, and other fields directly into your Teams message.

4

Add the Teams "Post message in a chat or channel" action

Click + New step and search for Microsoft Teams. Choose Post message in a chat or channel.

Post as Flow bot (no extra license required)
Post in Channel
Team Select your team from the dropdown
Channel Select the channel — e.g., Compliance, Job Site, or General
Message Compose using dynamic tokens (see template below)

Sample message template:

⚠️ COI expiring[vendor_name]
Expires [expiration_date] ([days_left] days remaining)
@ProjectManager — please follow up before this sub returns to site.

Replace [vendor_name] etc. with the dynamic content tokens Power Automate surfaces from the JSON schema. They appear as blue pills when you click inside the Message field.

5

Save and test the flow

Click Save. The flow is now live. To test it, add a contractor in TrackMyVendor — this fires contractor.created and TrackMyVendor delivers the webhook. Within a few seconds, your Teams channel should show the test message.

Tip: create one flow per event type

Add a Condition step after the HTTP trigger with the rule event is equal to contractor.coi_expiring. Put the Teams action in the "Yes" branch. This lets you run separate flows for COI alerts vs. license warnings vs. W-9 missing, routing each to a different channel.

Event reference

Event When it fires Key payload fields
contractor.created A new contractor is added to your roster vendor_id, vendor_name
contractor.compliance_changed Overall compliance status changes (pass ↔ fail) vendor_name, from, to
contractor.license_expiring License expiration enters an alert window (90/60/30/7d) vendor_name, expiration_date, days_left, window
contractor.coi_expiring COI/insurance expiration enters an alert window vendor_name, expiration_date, days_left, window
contractor.w9_missing A contractor who had a W-9 on file no longer does vendor_id, vendor_name

How TrackMyVendor secures your Teams webhook connection (optional)

Every request from TrackMyVendor includes an X-TMV-Signature header. In Power Automate, you can read the header value in the HTTP trigger outputs and verify it using a Compose action before the Teams step:

Signature format:

X-TMV-Signature: t=<unix_timestamp>,sha256=<hmac_hex>

HMAC is computed as: HMAC-SHA256(signing_secret, "{timestamp}.{raw_body}")

Frequently asked questions

Does TrackMyVendor post directly to Microsoft Teams?
No. TrackMyVendor sends standard JSON webhooks. Power Automate acts as the bridge — its HTTP trigger receives the payload and its Teams action posts a formatted message to your channel. No third-party subscription required.
Is Power Automate free with Microsoft 365?
Power Automate is included with Microsoft 365 Business Basic, Standard, Premium, and most enterprise plans. The HTTP trigger and Teams connector used in this setup are available under the included service plan — no standalone Power Automate subscription needed.
Can I post to multiple Teams channels?
Yes. Create one Power Automate flow per channel. Add a Condition step to filter by event type — e.g., contractor.coi_expiring → Compliance channel, contractor.license_expiring → Job Site channel. All flows can share the same TrackMyVendor webhook endpoint.
Can alerts go to a private Teams channel?
Yes. In the Teams action step, choose any channel the connected account has access to, including private channels. The flow runs under the Microsoft account used to connect the Teams connector.
Can I use Zapier instead of Power Automate?
Yes. Zapier has a Microsoft Teams action. If you already use Zapier, a Zap with a Webhooks by Zapier trigger + Teams action works the same way. See the Zapier integration guide for the full walkthrough. Power Automate is typically preferred for Teams-only setups because it requires no third-party subscription.

"Our project managers get a Teams alert the moment a sub's COI hits 30 days out. The whole setup took about 15 minutes and runs on our existing Microsoft 365 subscription."

General Contractor, Houston TX — managing 32 subcontractors across 4 active job sites

Using Slack instead?

Route compliance alerts to Slack channels via Workflow Builder or Zapier.

Slack guide →

Prefer Zapier?

Connect compliance alerts to 6,000+ apps with Zapier webhooks.

Zapier guide →

Don't have a TrackMyVendor account yet?

Track your first 25 subs free — no credit card required.

Start free →

Already have an account?

Add your Power Automate URL as a webhook endpoint in Settings → Integrations.

Open Integrations Settings