AlphaAlpha Docs

Online meetings

Give every online appointment its own video room, scheduled under the team member who runs the call

Online meetings

A booking widget set to Video call can hand out one of three things:

ProviderWhat the visitor getsNeeds
Fixed linkThe same URL for every appointment, typed into the widget onceNothing
ZoomA meeting scheduled per appointment, hosted by the team member it was assigned toA server-to-server app in the customer's Zoom account
Microsoft TeamsA Teams meeting on the appointment's calendar eventThe Outlook integration, and a Teams licence on the host's mailbox

The fixed link is fine for a single shared room. It stops working as soon as appointments are shared out across colleagues: two calls at the same hour land in the same room, and no call has a recording of its own. Pointing the widget at a provider fixes both.

Connecting Zoom

Zoom is connected per tenant, with a server-to-server OAuth app that lives in the customer's own Zoom account. There is no marketplace install and no app review.

  1. In the Zoom Marketplace, choose Build App → Server-to-Server OAuth. This needs a Zoom account with admin rights.
  2. Under Scopes, add at least meeting:write:admin (the granular equivalents, e.g. meeting:write:meeting:admin, work too).
  3. Activate the app and copy the Account ID, Client ID and Client Secret.
  4. In Alpha, open Settings → Integrations → Zoom, paste the three values, tick Enable Zoom meetings and save.
  5. Press Test connection. The test mints a token and checks the granted scopes: an app without a meeting-write scope fails here rather than on the first customer booking.

Without a meeting-write scope everything looks connected. The failure only shows up when a customer receives a confirmation mail with no meeting link in it, so run the connection test.

Connecting Teams

Teams needs no integration of its own. It rides on the Outlook connection under Settings → Integrations: the same Azure app, the same Calendars.ReadWrite application permission. If Outlook is on and the team member's mailbox has a Teams licence, Teams is ready.

The meeting is created as part of the appointment's calendar event rather than as a standalone meeting. That is deliberate; the standalone route (/users/{id}/onlineMeetings) additionally requires OnlineMeetings.ReadWrite.All plus a Teams application access policy that an administrator has to grant per customer over PowerShell. It also means the meeting has no separate lifecycle: moving the appointment moves it, cancelling the appointment cancels it.

One consequence to know about: a Teams meeting belongs to the mailbox its event lives in. Reassigning an appointment does not move the meeting to the new colleague; the join link keeps working and they can open it, but the original host stays the organiser. Zoom does hand the meeting over.

Pointing a widget at a provider

Open the widget under CRM → Booking widgets, set Appointment type to Video call and pick the Video provider. The form warns you when the provider it points at is not connected.

Keep a value in Video link as well. It is the fallback: if the provider cannot be reached, or the host's mailbox turns out to have no Teams licence, the appointment still gets booked and falls back to that link. A booking is a commitment between two people, and a conferencing API having a bad minute must not cost the tenant that booking.

When someone's conferencing account is not their work address

A meeting is hosted under the address of the team member the appointment was assigned to. That address has to be one the provider actually knows. It often is not: Alpha may hold thimo@yourcompany.nl while Zoom knows that person as thimo@theirownbrand.nl. Hosting on an address the provider cannot resolve yields no room at all, and the visitor quietly gets the widget's fixed link instead of that colleague's own meeting.

Fill in Zoom/Teams email on the employee (HR → Employees, under the contact details) whenever the two differ. Leave it empty when they are the same; an empty value simply falls back to the work email, so there is no need to duplicate it.

What happens over the life of an appointment

EventEffect on the meeting
Visitor booksA meeting is scheduled for the assigned team member; the join link goes into the confirmation mail, the calendar invite and the ICS attachment
Visitor reschedulesThe same meeting moves. The join link the visitor already has keeps working
Visitor or team cancelsThe meeting is deleted from the host's Zoom account, or with the Outlook event
Appointment is reassignedZoom hands the meeting to the new host, keeping its join link; the visitor's link is never invalidated. Teams keeps the original organiser
Booking is deletedThe meeting is deleted with it

For Zoom the host also gets a Start as host link on the booking detail. That link carries an embedded host credential, so it is shown inside Alpha only and is never mailed to the visitor.

Recording and note-taking

A per-appointment room is what makes a note-taker such as Fathom usable: the tool joins one specific call rather than a shared room. Recordings and summaries come back into Alpha through the call-recording webhook and appear on the appointment (see Sales call report).

Troubleshooting

SymptomCause
Appointments keep getting the fixed linkThe integration is off, or the widget's provider is still Fixed link
"Zoom has no user …" in the logsThe team member's Alpha email address differs from their Zoom login; set Zoom/Teams email on their employee record
Connection test reports a missing scopeThe server-to-server app was created without meeting:write:admin; add it in the Marketplace and activate the app again
Reconnect required badgeZoom rejected the stored credentials: the app was deleted or its secret rotated
Teams widget produces no linkOutlook is not connected, or the host's mailbox has no Teams licence

On this page