Microsoft mailbox & calendar connect: current flow, traps, proposal

How the Microsoft connect step actually works today, where it silently fails, and three ways to fix it.

2026-09-15 · proposal, not a build ticket · related: Western Slope go-live tracker — mailbox RCA

On this page

  1. Why this exists
  2. The two approvals, explained once
  3. Current flow, screen by screen
  4. The traps
  5. What Fede has ruled
  6. What Microsoft and other vendors say
    1. Microsoft 365
    2. Google Workspace
    3. Mainstream tools
    4. Leasing AI vendors
    5. How PM companies run leasing@
    6. Recommendation
  7. Proposal
  8. Connect flow: today vs proposed (prototype)
  9. Open decisions for Fede

Why this exists

On September 15, Western Slope's leasing agent fell into a flow trap the connect step never intended — she approved the company mailbox connection a second time instead of finishing it. Fede: "they accidentally fell into a trap that we did not intend." Before touching any UI, this page lays out how the flow actually works, names every trap in it, and proposes fixes.

The two approvals, explained once

There are two separate Microsoft approvals, and the flow only works if both happen.

Current flow, screen by screen

ScreenWho sees itWhat they can doWhere it sends them
Onboarding wizard — "Connect leasing email"Admins only (any other role is bounced to the dashboard once the company has properties)Starts the Microsoft sign-inBack to the wizard, which then asks "Which shared mailbox should Clara reply from?" with a field and "Use this mailbox"
Settings company card — "Connect leasing email"Every memberStarts the Microsoft sign-inBack to Settings
Settings, after approval (admin)AdminSees the mailbox question, a field, and "Use this mailbox"
Settings, after approval (non-admin)Non-adminSees the same question, a "Waiting on setup" badge, and one button: "Connect a different mailbox" — which restarts the same approval. No field to actually name the mailbox.Back through Microsoft sign-in, to the same half-done state
Dashboard reminder — "finish the leasing email"Admins onlyDismissable, per session
Per-building settingsMembers who can't finish it"One step left, finish it in company settings" — no link
Settings — "My calendar" cardLeasing agents (admins see company status instead, by design, Fede 9/14)Approves their own calendar
Back-office company pageStaffShowed "Mailbox approval granted" even for the half-done state (fix in flight)

The traps

Numbered, most likely to bite first.

  1. Anyone can start, only an admin can finish. Any member can kick off the company connection, but only an admin can complete it — and the finishing screen never says so.
  2. The only button re-triggers the same approval. After approval, a non-admin's one option is "Connect a different mailbox," which just restarts the approval and produces the same half-done state. This is exactly what happened at Western Slope: two approvals, two minutes apart.
  3. No one is told a teammate left it half done. The admin nudge is dismissable and easy to miss.
  4. Mailbox access is checked too late. Whether the approving account can actually open the shared mailbox is only checked at the very end, after Microsoft, on a page most people never reach. At Western Slope today, neither the leasing agent's nor the owner's account can open leasing@ (verified live). Even the admin path would have failed — with a generic "unreachable."
  5. An extra step got added. The "which mailbox" question is a second step added September 12, when Fede's September 11 ruling was one request, one step.
  6. Errors are shown raw. A "Not allowed" or "unreachable" answer from the server is shown as-is, with no next step for the person reading it.
  7. Wording overstated a half-done state. The back-office page said "approval granted" for a mailbox that wasn't actually reachable.
  8. The calendar connection doesn't do anything yet. Tour booking doesn't read a leasing agent's own calendar yet (Fede 9/14: the gap to close), so a connected personal calendar looks done but changes nothing today.

What Fede has ruled

One company approval should cover the shared leasing mailbox and calendar; a leasing agent connects her own calendar separately. Fede, 9/9
"ONE request for mailbox + calendar." The admin-approval case is the default, and sending it is success. Fede, 9/11
"we book tours by looking at people's calendars not the building" — admins never connect a personal calendar link. Fede, 9/14
"any role should be able to set it up, but make sure it's just once at the org level for that type of client." Fede, 9/15
"let's not jump to changing UX." Fede, 9/15

What Microsoft and other vendors say (research, 2026-09-15)

Microsoft 365 (official docs)

ModelWho grantsAdmin consent screen?ReadsSends as leasing@Sent folderLimited to one mailbox
Person with access signs in (Mail.ReadWrite.Shared, Mail.Send.Shared)The person consents; IT gives them Full Access + Send As on the mailboxNoYesYesShared mailbox's Sent Items, when sent via /users/{shared}Yes
App permissions, unscopedGlobal adminYes, whole tenantAll mailboxesAll mailboxesYesNo
App permissions + RBAC for Applications (replaces Application Access Policies)Exchange admin assigns scope in PowerShellYes, still tenant-wide on the consent screenScopedScopedYesYes
Microsoft 365 Group mailboxn/an/aGroup conversations onlyNo sendMail for groupsn/an/a

Quotes and sources:

Deeper Google Workspace research, verification path and options for Fede now live on their own page: Google Workspace connect flow.

Google Workspace (official docs)

leasing@ is a...App reads via a person's sign-inApp sends as leasing@Who grants
Google Group / collaborative inboxNo, groups have no Gmail mailbox (the Migration API is import-only)Non/a
Delegated Gmail mailboxNo, "only available to service account clients that have been delegated domain-wide authority"Non/a
Alias on a person's accountYes, mail lands in that person's inboxYes, via "Send mail as"Admin adds the alias, person signs in
Real account with its own loginYesYesWhoever holds the login
Domain-wide delegation (service account)Yes, every user in the domainYesSuper admin only. "They don't restrict which users can be impersonated." Google: "Avoid using domain-wide delegation if you can."

Mainstream tools on an Outlook shared mailbox

ToolMethodTheir words
FrontPerson with access signs in"'Read and manage' permissions, 'Send as' permissions, 'Send on behalf of' permissions." Front article 2068
MissivePerson with access signs in"Select an account that has access to the shared mailbox." Missive docs
NylasPerson with access signs in"The grant needs Microsoft Send As or Send on Behalf permission for that mailbox, granted by a tenant admin." Nylas admin approval guide
ZendeskConverts it to a normal login"You must first convert the shared mailbox into a regular user mailbox." Zendesk article
FreshdeskIMAP with a member's login"Should be a member of the shared mailbox and have read and managed permissions and sent as permission." Freshdesk article
HubSpot, Help Scout, Gorgias, IntercomForwarding ruleHelp Scout: "Once you turn on forwarding in Outlook, stop managing email there." Help Scout article 1269
Gong, Outreach, Salesforce, CronofyCompany-wide admin consentOutreach: "This app will get access to specific resources for all Users in the Organization." Outreach article

Leasing AI vendors

VendorLeads come fromReplies fromCalendarMicrosoft/Google admin step
EliseAIPMS/CRM feed. "Redirect all leads to your AI Assistant's email address" (Knock launch steps)Vendor address (a third-party claim, not confirmed by EliseAI itself)Per-agent Outlook/Google syncNot found in 11 help articles
FunnelVendor per-community forwarding addressCustomer's own mailbox via Nylas OAuthPer-user OAuth via NylasNot found
Knock, Zuma, Rently, Colleen, Respage, Entrata, Yardi, AppFolioPMS/CRM feedNot foundPer-agent or PMS calendarNot found
BetterBotn/an/aOne Outlook/Google calendar per bot"BetterBot must change client permissions before users connect"

Sources: EliseAI help article, EliseAI help article, Nylas / Funnel case study, Funnel Leasing blog, Rently agent scheduler, BetterBot calendar docs

How PM companies run leasing@

Recommendation

One model, both platforms: Clara signs in as the leasing identity, through the account that already has access to it. No forwarding, no DNS, no company-wide consent.

Proposal · Proposed, pending Fede's pick

OptionWhat the person seesFixes the two-approvals trap?ProsCons
A, delegated sign-in scoped to one mailbox (current recommendation)Anyone can start. Screen 1 asks for the shared mailbox address. Screen 2 is Microsoft sign-in by a person who already has access to that one mailbox (their IT grants it in a minute if they don't). On return, we check that account can actually open that address. Success: "Leasing mailbox connected: leasing@…, approved by <name>." Failure, shown immediately, with a plain next step. Done once per company; after that, only a status line and a "change" action. Two dark PRs in flight: the shared-inbox listener (Clara subscribes to the shared mailbox, not only the signer's inbox) and the address-first connect flow.YesOne request, one step. Clara reads and replies from the client's own address, e.g. leasing@. Catches the access problem on the spot. Matches the 9/11 and 9/15 rulings.Needs a real-time mailbox-access check, and the receive side of delegated sign-in built (today's subscription only reads me/messages)
D, forward + own-domain send (rejected 2026-09-15)Client sets up one forwarding rule from their shared inbox to a PropFlow ingest address. Clara sends from a subdomain of the client's own domain, authenticated via DNS (SPF/DKIM/DMARC). No Microsoft sign-in, no Microsoft permission, at all.Rejected. Fede: "we want the emails to come from leasing@ as the first preference", "read and write", "no hacks", "no crazy ideas like DNS".
B, admin-only finish (today)Same as the current flow aboveNoAlready built, simple to explainAssumes the admin's account can reach the mailbox. False at Western Slope, the trap that caused this page
C, company-wide access grant (rejected 2026-09-15)One admin consent grants our app read/send access to every mailbox in the tenant. Rejected: too much trust to ask of clients who won't grant it, and no leasing-AI competitor we found asks for it either. Kept here only as a record, not a live option.

Current recommendation: Option A (delegated sign-in scoped to one mailbox) as the standard approach for shared mailbox connection. Personal calendars stay per-person approvals. Two dark PRs in flight to ship this: the shared-inbox listener and the address-first connect flow. Note: the next client, Situs Group, is on Google Workspace with a shared leasing address, so the chosen model must work on Google too.

Connect flow: what changes (2026-09-15)

The problem. Kat signed in with Microsoft, then PropFlow asked "which shared mailbox?" on a page only admins can use. She could not answer, saw "Not allowed", and nothing was connected.

The fix, in one sentence. Ask for the mailbox address first, check right after sign-in that the account can open it, say in plain words if it cannot, and let any team member finish.

StepToday (what Kat saw)Proposed
1. AddressAsked after Microsoft, admin onlyAsked first, on the Settings card: "Which shared mailbox should Clara reply from?"
2. Microsoft sign-inSameSame, any team member
3. CheckNone. "Not allowed."Checked at once. If it fails: "We can't reach that mailbox with this account. Ask your Microsoft admin to give this account access to it."
4. DoneShowed "Done" with nothing connectedShows the mailbox address, who approved it, and a Change link

Three held PRs carry this (8648 address first, 8664 check and plain-words error, 8665 any member may finish). Nothing shipped. Real screenshots of both flows, taken on localhost with our test org, will be added here.

Real screens (localhost, test company, 2026-09-15)

Signed in as a non-admin leasing agent in our test company. Microsoft's own sign-in page is not shown. Only one screen changes: the "which shared mailbox?" screen after Microsoft sign-in.

1. Before anything is connected. Same on both sides.

Settings before connection
Today and proposed: identical.

2. After Microsoft sign-in, today. A "Waiting on setup" badge and a button that only restarts the sign-in. A non-admin cannot type the mailbox. This is where Kat got stuck.

Today: waiting on setup, no address field

2. After Microsoft sign-in, proposed. The same person sees an address field and "Use this mailbox" and can finish.

Proposed: address field and Use this mailbox

QA (Fede, 2026-09-15): the "Use this mailbox" button on the proposed screen is slop: label wraps to two lines, disabled state looks clipped, input and button crammed into the card row. Not acceptable as is.

What the screens show. On this branch the address is still asked after Microsoft sign-in, not before. The change is that a leasing agent can finish. If the decision is admin-only setup with staff connecting only a calendar, this screen should not be reachable by a leasing agent, and the address field moves to the admin's card before the Microsoft step. Not captured: the "we can't reach that mailbox" error, which needs a real Microsoft check.

Design of record (Fede, 2026-09-15 night): email setup is chosen at client setup, read only once live

Onboarding assumed every client connects one Microsoft shared inbox. We already run three shapes: Camellia (one inbox per property, the property signs in as it), Western Slope (one shared inbox for the company), Yale (a PropFlow address). Fede's decisions, approved for build:

What the admin card looks like, per shape

The card lives on the company settings page, admins only. Same card, four states. Nothing else on the page changes.

Shape A. Client's own inbox, one for the company (Western Slope). Before connecting:

Leasing email

Clara replies from your leasing inbox.

leasing@yourcompany.com

Not a person's own inbox.

Connect

Shape A, after the admin signs in with Microsoft and the check passes:

Leasing email

Connected

leasing@westernslopepm.com Change

Approved by Jay, Sep 16, 2026

Shape B. Client's own inbox, one per property (Camellia). The company card is only a note. Each property page keeps the connect card it has today.

Leasing email

Each property connects its own leasing inbox from its property page.

Shape C. A PropFlow address (Yale). Nothing to connect. The admin copies the address into Zillow, Apartments.com and AppFolio.

Leasing email

Clara replies from this address.

clara+yale@propflowai.co Copy

Point your listing sites and AppFolio lead notices at this address.

Which shape a company gets is set by PropFlow at client setup and is read only once live. Leasing agents and property managers never see this card, only "connect your calendar".

Built 2026-09-16, all merged dark: #8715 setup fields, #8728 admin card per shape, #8714/#8720 settings hidden from non-admins. Nothing turned on for any client; existing clients are not stamped yet (backfill script in #8715, dry-run only, Fede's go).

Build plan (dark, one concern per PR, nothing turns on): (1) the two setup fields on the company record plus the customer setup form, with the read-only rule; (2) the admin card per shape, replacing the card UI from 8648/8664 (their logic stays); (3) hide company settings and integrations from non-admins, calendar card only. 8665 closed. Fede on the old UI: "I don't like any of this new UI"; the "Use this mailbox" button was called out as slop.

PropFlow Docs