The full procedure: from a tested chat agent to your branded bot answering a client’s employees in their Microsoft Teams
Put your own support bot — your name, your icon — into a client’s Microsoft Teams. Their employees message it; your chat agent answers; everything runs on your Neo configuration and bills to you.This page is the canonical deployment procedure, written to be followed top to bottom for each client you roll out to. For what channels are, see Channels.
The client’s Microsoft 365 tenant ID, set on their company record under Companies.
A Microsoft 365 admin in the client tenant to approve the one-time install — their admin, or you if you have delegated (GDAP) admin into their tenant. The tenant must allow custom Teams apps either way.
First rollout? Deploy into your own Microsoft 365 tenant first, exactly per the steps below, with your own company registered on the channel. You’ll see everything the client’s employees will see, and you can click the install link yourself.
The fastest path is a magic install link: you generate it, the client’s admin clicks it once and approves, and Neo publishes your branded app into their tenant automatically — no zip to upload. (No admin access? See Install the package manually below.)
1
Create and activate the channel
Open Chat → Channels → New Channel. Pick the Teams transport, assign your chat agent, and leave the status on Active (the default).Everything under Branding is optional — any field you leave blank uses the Neo default. Set at least the Display name (the bot’s name in Teams) and the Welcome message (the first thing users see) to make it yours.
2
Generate the install link
In the saved channel’s edit dialog, under White-label installs, pick the client company and click Generate install link.The picker lists your Companies that have a Microsoft 365 tenant ID and aren’t already bound to another channel — one branded bot per client. Copy the link; it’s tied to this one channel and tenant and expires in 1 hour (generate a fresh one if it lapses).
3
Send it to the client's Microsoft 365 admin
The admin opens the link, signs in, and approves the consent screen. That grants the Neo Installer app permission to publish apps into their tenant’s catalog; Neo then publishes your branded app there and registers routing — all in one click. They land on a “You’re all set” confirmation.
This consent is for publishing the app only. The bot itself is still messaging-only and has no Microsoft Graph access in the client tenant — its manifest permissions are just identity and messageTeamMembers. If you have GDAP admin into the tenant, you can click the link and approve it yourself.
Once they’ve approved, routing is live: messages from that tenant to your bot route to this channel’s agent. There’s no separate confirmation step and no ordering to get right — the publish and the routing registration happen together.
4
Make it reach their users
Publishing puts the app in the org catalog, but users still have to find it. In the client’s Teams admin center → Teams apps → Manage apps, open your app’s page and push it out:
Confirm Available to says Everyone (the org-wide default), or scope it.
On the Users and groups tab, select Installs → Install app → in the Edit installs panel set Install to: Everyone → Apply. The bot now appears in everyone’s Teams automatically.
5
Verify
From a user account in the client tenant, open the bot in Teams:
First contact shows your welcome message (or “Hi! I’m your display name” if you left it blank).
A 1:1 question gets an answer from your agent.
/reset (or /new) acknowledges and starts a fresh conversation.
The user’s company is recognized from the Microsoft 365 tenant the message arrives from — no per-user setup, no company mapping (see Sessions & billing).
If the tenant blocks the consent flow, or the app is already installed and you only need to bind routing, use the zip instead of the link:
1
Download the Teams app package
In the channel’s edit dialog, click Teams app package. You get a .zip containing the manifest and your icons — upload it exactly as downloaded; re-download it whenever you change branding rather than reusing an old copy.
2
Upload it in the client's Teams admin center
Open the Teams admin center → Teams apps → Manage apps → Actions → Upload new app, and upload the .zip.
3
Register routing on the channel
Back under White-label installs, pick the company and use App already installed in this tenant? Register directly to bind routing. Do this before users start messaging — the bot greets on install, and an unregistered tenant gets a neutral “finishing setup” note instead of your welcome message (routing still self-heals on the next message once registered).
What you can change without touching the client tenant, and what needs the app re-published:
Change
Takes effect
Welcome message, assigned agent, agent instructions and tools
Immediately — these live on Neo’s side
Display name, description, icons
After the app is re-published — these live in the installed Teams app
To roll out a branding change: edit the branding in the channel dialog (the package version increments automatically), then click Push update under White-label installs. Neo re-publishes the current branding to every tenant that installed via the link — no client re-consent, no admin-center step. Users keep their conversations.
Push update reports any tenants it couldn’t reach — usually because the Neo Installer app was removed there, or the tenant now blocks custom apps. Re-send those a fresh install link to re-consent. Tenants you installed via the manual zip aren’t covered by Push update; re-upload there with New version → Upload file in the admin center.
If you run delegated admin (GDAP) across your clients, you don’t need to wait on each client’s admin — open the install link yourself for any tenant you administer. For full automation, the same publish is a single Microsoft Graph call against the client tenant — POST /appCatalogs/teamsApps with the package from Teams app package (then PUT .../appDefinitions to update) — which slots into a CIPP-style runbook.
Remove the company’s row under White-label installs — routing stops immediately and the bot no longer responds in that tenant. Then have the client’s admin remove the app from their Teams admin center so users don’t message a dead bot.
The consent has to be approved in the client’s own tenant. If the admin was signed into a different tenant (e.g. your MSP tenant) when they clicked, Microsoft consents there and Neo rejects the mismatch. Have them sign out, sign in to the client tenant, and open the link again. If the link is older than an hour it’s expired — generate a fresh one.
Publishing failed — the tenant blocks custom apps
The link removes the upload step, not the tenant’s policy. The client tenant must allow custom (line-of-business) Teams apps. Have their admin enable custom app uploads in the Teams admin center, then re-open the link.
Push update lists a tenant that needs attention
That tenant either removed the Neo Installer app (revoking publish rights) or now blocks custom apps. Send its admin a fresh install link to re-consent; the re-push then succeeds.
Users got a 'finishing setup' greeting instead of my welcome message
The app was installed before the channel was Active or before routing was registered — most common on the manual-zip path. The greeting is one-time, and routing self-heals: activate the channel and confirm the company is registered, and the next message a user sends reaches your agent normally.
The bot doesn't respond at all
Check in order: the channel is Active (a Disconnected channel stays installed but doesn’t route); the client company shows under White-label installs with the correct tenant ID; and the user messaged 1:1 or @mentioned the bot in a group chat.
It answers 1:1 but ignores group chats
By default the agent is mention-only in group chats and channels — it answers when @mentioned. Switch the agent to read-all to answer every message (see mention mode). /reset works in groups even without a mention.
I can't add the company to White-label installs
Two causes: the company has no Microsoft 365 tenant ID (set it on Companies — it must be the tenant GUID), or that tenant is already bound to another of your channels — one branded bot per client.
This bot is for your clients’ end users. For your own technicians — notifications, approvals, Neo Support — use the Neo Agent Teams app instead.