Microsoft Teams messaging
Connect Microsoft Teams once, and the assistant can post updates to the channels your team already works in — a heads-up when a contact needs attention, a link to a blog post that just went live, or a short report of how a send performed. The messages arrive as native Teams messages, formatted for readability, with buttons that link straight back into the app.
This is for posting to your team's own channels. It does not message your contacts — journeys still reach contacts by email and text.
Before you start: making the app available in your organization
There are two jobs here, usually done by two different people. If the ThinkingStreams app already appears when you search Teams' app list, skip to Connecting Teams — someone has done this part already.
For your Microsoft 365 or Teams administrator (once per organization)
You'll need the app package — a single .zip file. Whoever manages ThinkingStreams for your
business downloads it from Settings → Integrations → Messaging: on the Microsoft Teams
card, select Download app package, and send the file to you. The card offers it whether or
not Teams is connected yet. It isn't in the public Teams store, so you add it to your own
organization's app catalog:
- Open the Teams admin center and sign in as a Teams Administrator or Global Administrator.
- Go to Teams apps → Manage apps.
- Select Upload new app, then Upload, and choose the
.zipyou were sent. - The app appears in your catalog as ThinkingStreams. Leave it Allowed.
Two settings decide whether anyone can then use it, both under Teams apps → Setup policies:
- Upload custom apps must be on for the policy covering the people who will add the app to their teams. Many organizations have this off by default.
- If you use Permission policies to restrict apps, make sure ThinkingStreams is permitted for those people.
Changes to these policies can take a few hours to reach everyone.
The package is built to match the version of ThinkingStreams you're using, so download a fresh copy from the card rather than reusing an older file.
What the app will ask for. When a team owner adds it, Teams shows two permissions and the owner approves them for that team only:
| Permission | What it's for |
|---|---|
| Read messages in channels the app is added to | so the assistant can use recent channel discussion as context when you ask it to write something |
| Read the names and settings of the team's channels | so we can show you a real channel list to choose from, instead of ids |
The app only ever posts to, and reads from, the channels of teams it has been added to. It cannot see your other teams, your private chats, or your contacts. You can remove it from the catalog at any time, which stops it everywhere in your organization.
For whoever runs the team (once per team)
You need to be a team owner to add the app and approve its permissions. Then follow Connecting Teams below.
Connecting Teams
Teams connects differently from Slack. There is no sign-in window: you add the app to your team in Teams, then send it a one-time code from this app. The code is how the app learns which account the Teams install belongs to.
- In Teams, add the ThinkingStreams app to the team whose channels you want it to post to: Apps, search for it, then Add to a team. Teams shows the permissions the app asks for, and the team owner approves them. If you can't find the app, it hasn't been added to your organization's catalog yet — see the section above. Your Microsoft 365 administrator needs the app package for that; Download app package, on the Microsoft Teams card in Settings → Integrations → Messaging, gets it for them to send on.
- In the app, go to Settings → Integrations → Messaging and find the Microsoft Teams card. Do this after step 1, so the code's clock isn't running while you add the app.
- Select Add to Teams. A pairing code appears, with a countdown showing how long it stays valid.
- In Teams, post the code on its own as a message in a channel of that team — any channel the app has been added to. Copy code puts it on your clipboard. The app replies in the channel to say it's connected.
- Back in the app, the card changes to Connected within a few seconds. Pick a default channel — the one used when the assistant posts without naming a specific channel — and select Send test to see a test message land in it.
Everyone in the channel can see the code, because you post it as an ordinary message. A code works once, and stops working when it expires or is used. Post it in a channel you're comfortable with, and use it straight away.
If the code runs out
A code is valid for 15 minutes, and the card counts down the time left. If it runs out before you've used it, the card says This code has expired and offers Get a new code. Select it and use the new code instead. An expired code never works, even if it is still sitting in a channel.
What the app says back
The app answers the code in the channel:
- Connected — the code worked. It says how many channels are now connected, because pairing connects every team in your Microsoft 365 organization that has the app added.
- The code isn't valid — it expired, was already used, or was mistyped. Get a new code and post that.
- Already connected to a different workspace — a Microsoft 365 organization can be connected to one workspace at a time, and this one is connected to another.
- Not added to a team yet — add the app to a team first, then get a new code.
If the app doesn't answer at all, check that the message holds only the code, with no other words, and that it's in a channel of a team the app has been added to. If it still doesn't answer, mention the app first (type @ and pick it), then the code.
Choosing where it posts
Every channel of the teams you've added the app to is listed on the Teams card, as Team / channel — not only the channel you added it to. Use the Default channel list to choose which one is used when a message doesn't name a channel; you can pick any of them. Teams has no single workspace name, so unlike Slack the card doesn't show one.
A channel marked (private) needs the app added to that channel as well as to the team — see "Good to know" below.
If a channel is listed by its team name alone, with no channel after it, Microsoft hasn't told us its name yet. Update to the latest version of the app and consent to the permissions it asks for — that lets us read channel names, and the labels fill in.
Using Teams in a journey
On a Notify team action in the journey builder, Microsoft Teams appears alongside email and in-app as a channel, as soon as Teams is connected:
- Add or open a Notify team action.
- Tick Microsoft Teams in the channels list.
- Choose the Microsoft Teams channel to post to. Each team you've added the app to is listed as Team / General, the same names the Teams card shows.
- Write the subject and body as usual. Merge fields like the contact's first name work the same way they do for email and in-app notifications.
The channels list offers only what is connected. If both Slack and Teams are connected, both appear and you can tick both: the action asks for a channel for each, and posts to each. If only one is connected, only that one appears. If neither is, the list shows a greyed-out Slack or Microsoft Teams option instead, with a link to Settings → Integrations → Messaging where you can connect one.
When the journey runs, each contact who reaches the action triggers a post to the channel you chose. Every post links back to the journey it came from and the contact it is about (and the campaign, when the journey belongs to one), as buttons on the Teams message. Journeys run on their own, with no one present: if Teams is disconnected when the journey fires, that step is quietly skipped and recorded, and the rest of the journey continues. It never stops the journey.
If Teams is disconnected after you ticked it, the action keeps showing it, marked Not connected, so you can untick it or reconnect. A journey won't publish while a ticked provider has no channel chosen.
Using Teams with the assistant
Ask the assistant to post to a channel in plain language, for example:
- "Post to the Marketing team in Teams that the Q3 launch blog post is ready, and link it."
- "Let the team know in Teams that the June newsletter just went out."
The assistant builds the message, attaches a working link to whatever it's referring to — an artifact, a contact, an automation, or a campaign — and shows you the message for approval before it posts. Nothing is sent to Teams until you approve it. If both Slack and Teams are connected, it asks which one you mean.
You can also ask which channels it can post to, and the assistant can read a channel to use as background when it creates something. Reading is covered by the permission the team owner approved when the app was added to the team.
Disconnecting
Remove the connection any time from Settings → Integrations → Messaging with Disconnect. The card then says: Removed. To stop the app posting entirely, also remove it from the team in Teams.
Disconnecting forgets the connection on our side, so the app stops posting to your teams, but it does not remove the app from Teams. The app stays installed in your team, and getting a new pairing code connects it again. To stop it for good, remove the app from the team in Teams as well.
Good to know
- Teams can't tell us when the app is removed from a team. If someone removes it in Teams, the card keeps saying Connected until a post fails.
- Adding another TEAM later takes a new code. Pairing connects the teams that have the app at that moment. A team you add afterward doesn't appear until you connect again: Disconnect, select Add to Teams, and post the new code. You'll choose your default channel again afterward. (A new channel in a team you already connected needs nothing — it shows up on its own.)
- Teams, not chats. The app works in the channels of a team. Group chats and one-to-one chats aren't supported.
- Adding the app to one channel gives it the whole team. You pick a channel when you add the app, and it doesn't have to be General — but the app can then post to, and read, any normal channel of that team. Add it once per team, not once per channel. Private channels are the exception, below.
- Private channels work, with one extra step. They're listed with (private) after the name. Adding the app to the team doesn't give it a private channel — you have to add the app to that channel too, from inside the channel in Teams. Until you do, a message to it comes back saying the app isn't in the channel. (Microsoft's own documentation says agents can't post into private channels at all; we tested it, and they can.)
- Shared channels aren't offered. Microsoft doesn't support bots in them, so they're left out rather than offered and then failing.
- Approval on sends. Every message the assistant posts is shown to you first.
- Links open the app. The buttons in a Teams message open the login-gated app, so only your team can follow them to the record.