One Microsoft Graph connection covers calendar ingestion from Outlook, transcript ingestion from Teams meetings, and reply detection in Outlook mail. Designed for Microsoft 365 Business and Enterprise tenants.
One OAuth flow, three Microsoft 365 surfaces
Ingest meetings from every connected user. Drives transcript fetch from Teams or Recall.
Pull Teams meeting transcripts via Graph callRecords API once a recording finishes.
Track reply detection on dispatched follow-ups and capture incoming replies as engagement signals.
~20 minutes if you already have an Entra app; ~30 minutes from scratch
In the Microsoft Entra admin center, go to App Registrations → New registration. Pick a name (e.g. "FastFollow") and the appropriate audience.
Under API permissions → Add a permission → Microsoft Graph → Delegated permissions, add the scopes below. For tenant-wide deployments, switch to Application permissions and grant admin consent.
Under Certificates & secrets, create a new client secret. Copy the value immediately — it is shown only once.
In FastFollow, go to Integrations → Microsoft → Connect. Sign in with the Microsoft account whose calendar should be ingested.
Graph subscriptions by default, with polling fallback
FastFollow creates Microsoft Graph subscriptions for /users/{id}/events and /users/{id}/messages. Graph posts every change to /api/webhooks/microsoft within seconds.
If subscription creation fails (network egress restrictions, conditional access policies), FastFollow falls back to Graph delta query polling every 5 minutes.
What an IT admin needs to know before approving FastFollow
Conditional Access
If your tenant requires MFA or location restrictions for app-only auth, the FastFollow service principal must be excluded from those policies or granted an exception.
Teams transcription policy
Transcripts only land if Teams admin has enabled Transcription in Meetings → Meeting policies. Without it, OnlineMeetingTranscript.Read.All returns 404 for every call.
Application vs Delegated permissions
Delegated = per-user (recommended for self-serve). Application = tenant-wide (recommended for managed deployments). Choose one and stick with it — mixing causes scope mismatches.
Data residency
Graph data is stored in your Microsoft 365 tenant region. FastFollow honors the regional routing of the Graph endpoint you authenticate against.
The most common Microsoft Graph errors
AADSTS65001Admin consent has not been granted for the requested permissions.
Fix: For permissions requiring admin consent (OnlineMeetingTranscript.Read.All, Application-tier scopes), a tenant admin must visit the consent URL or grant consent in the Entra admin center under API permissions.
AADSTS50105The signed-in user is not assigned to a role for the application.
Fix: If the app is configured to require user assignment in Enterprise applications → Properties, only assigned users can sign in. Either assign the user or disable "Assignment required".
InvalidAuthenticationTokenToken rejected by Graph immediately on every request.
Fix: Refresh token has expired (>90 days idle) or was revoked. Have the user reconnect from FastFollow → Integrations → Microsoft.
ResourceNotFound (transcripts)Meeting events appear but transcripts never ingest.
Fix: Teams transcription was not enabled for the meeting, or OnlineMeetingTranscript.Read.All admin consent is missing. Confirm meeting policies in Teams admin center → Meetings → Meeting policies → Transcription = Enabled.
subscription_renewal_failedPush notifications stop arriving after ~3 days.
Fix: FastFollow renews Graph subscriptions every 2 days via a cron job. If renewal fails for 2+ consecutive runs, the integration falls back to polling. Check /admin/health for subscription state.
TooManyRequests (429)Initial backfill triggers throttling.
Fix: Microsoft Graph enforces per-app and per-tenant throttling. FastFollow honors Retry-After headers with exponential backoff. For large historical backfills, contact support to schedule outside business hours.