Connecting a Microsoft work account so AppBO can read Outlook availability, write bookings and send from the company mailbox.
Bring your stack to a call and we will connect it, test every field in both directions, and hand it over documented.
Book a callOn the Microsoft side sits a work or school account in Microsoft 365, or a consumer Outlook account. Behind it are an Exchange Online mailbox and a calendar, both reached through the Microsoft Graph API: calendar events with attendees and response status, free/busy information, mail folders and messages, and the conversation identifiers that let a reply be threaded to the message it answers. Tenant-level policy sits above all of it, which is the difference that matters compared with a personal account.
On the AppBO side sit the same two consumers as any calendar and email connection: the booking calendar that needs to know when someone is genuinely busy, and the outbound email channel that needs a legitimate from-address and somewhere for replies to land. Wiring Microsoft in gives a Microsoft-based team one source of truth for their day and one address their clients already recognize, without asking them to live in a second inbox.
The practical reason to choose this over a generic SMTP relay is threading and visibility. Because the platform talks to the mailbox rather than to a relay, a sent message can appear in the user's own Sent Items and a reply can be read back and attached to the contact's conversation. The practical reason to be careful is the tenant: conditional access, app-consent policies and mailbox restrictions are all set by an administrator, so a connection that works for one user can fail for the next for reasons invisible inside the platform.
Scenario: a Microsoft-based consultancy sends a proposal from the firm's mailbox, the client replies, and a follow-up call is booked into Outlook.
Microsoft Graph throttles per application, per user and per mailbox, and Exchange Online applies its own sending limits per mailbox over rolling windows. Those limits make a connected mailbox unsuitable for bulk marketing sending regardless of what the platform will let you queue. Microsoft publishes current throttling guidance and service limits in its documentation; check those figures before planning volume rather than discovering them through failures. When throttled, Graph returns a retry-after indication, and a well-behaved integration waits rather than retrying immediately.
Transient throttling and timeouts are retried, and a retry after an ambiguous timeout is where duplicates come from. Two events for one booking, or the same message sent twice. If you call Graph yourself rather than relying on the native connection, carry your own identifier for each logical operation and check before creating. In workflows, anchor on the appointment or the inbound-reply event and guard the branch with a tag so a replayed trigger does not re-send.
Time zones are expressed explicitly in Graph and Outlook stores a user's preferred zone separately from the event's; a mismatch with the platform user profile produces events an hour or several hours out, and daylight-saving transitions are where it shows. Verify with a real booking across a transition if your business spans one. The from-address is the mailbox, not whatever you type in a template, so a template with a hard-coded sender will be overridden. Reply-to behavior differs between a user mailbox send and a relay send, so confirm which address replies actually reach.
Duplicate events appear when the write-target calendar is also read for conflicts, when two platform calendars target the same Outlook calendar, or when the user has a mailbox rule that copies events. Duplicate contacts appear when a reply arrives from an alias of an address already on file; Microsoft users commonly have several proxy addresses, so normalize and match on all known addresses rather than only the primary one.
A Microsoft developer tenant is the closest thing to a sandbox, and it is genuinely useful for proving the consent flow without touching production policy. It will not reproduce the customer's conditional access rules, so a connection proven in a developer tenant can still fail in theirs. Test the consent path in the real tenant with one pilot user before rolling out.
Refresh tokens are revoked by a password change, by an administrator revoking sessions, by conditional-access re-evaluation, by removing the application from enterprise applications, and by the user themselves in their account's app permissions. Multi-factor policy changes are a frequent silent cause. The failure mode is quiet: bookings keep being offered while conflicts stop being read, and outbound mail queues or falls back to another sender. Monitor connection status per user and treat a reconnect as routine maintenance.
We wire the integration, map the fields, test both directions and hand it over with the SOPs your team needs to run it.
Book a call