calcom/cal.diy · error · Error
Default conferencing app
Error message
Default conferencing app '${defaultApp.appSlug}' doesnt exist. What it means
Thrown by bulkUpdateEventsToDefaultLocation when the defaultConferencingApp.appSlug stored in user metadata does not resolve to a registered app (getAppFromSlug returns undefined) or that app has no location type in its appData. The stored slug is stale or refers to an app no longer available.
Solutions
- Have the user re-pick a default conferencing app so metadata stores a current, valid slug.
- If an app was renamed, migrate affected users' metadata to the new slug.
- Verify the app is installed and generated in the app-store so getAppFromSlug finds it.
- Guard callers: clear the default and prompt re-selection when getAppFromSlug returns undefined.
Example fix
// before - trusting stored metadata blindly
await bulkUpdateEventsToDefaultLocation({ eventTypeIds, user, prisma });
// after - validate the slug resolves
import { getAppFromSlug } from '@calcom/app-store/utils';
const slug = userMetadataSchema.parse(user.metadata)?.defaultConferencingApp?.appSlug;
if (!slug || !getAppFromSlug(slug)?.appData?.location?.type) {
return res.status(400).json({ message: 'Default conferencing app is no longer available' });
} Defensive patterns
Strategy: validation
Validate before calling
import { getAppFromSlug } from '@calcom/app-store/utils';
const slug = userMetadataSchema.parse(user.metadata)?.defaultConferencingApp?.appSlug;
if (!slug || !getAppFromSlug(slug)?.appData?.location?.type) {
return res.status(400).json({ message: 'Default conferencing app is no longer available' });
} Type guard
function isUsableConferencingApp(slug: string): boolean {
return !!getAppFromSlug(slug)?.appData?.location?.type;
} Try / catch
null
Prevention
- Validate the stored slug resolves to an app with a location type before bulk update.
- Run slug migrations when an app is renamed so metadata stays valid.
- Clear stale defaults and prompt re-selection when an app is uninstalled.
When it happens
Trigger: User metadata points to defaultConferencingApp.appSlug that is not in the app registry, or the app exists but exposes no appData.location.type. Happens when an app was uninstalled/renamed/disabled after the user set it as default.
Common situations: App slug renamed in an upgrade; app package removed from the build; user manually edited metadata; app disabled via feature flags; the app never had a conferencing location type (misconfigured as a default conferencing app).
Related errors
- Default conferencing app
- Default conferencing app not set
- Default conferencing app not set
- Could not set as default conferencing app
- Access denied. Either the team with ID=
AI-assisted analysis of calcom/cal.diy@176037d0af (2026-08-12).
Data as JSON: /api/errors/004cef9da3b4ad30.
Report an issue: GitHub.
Appendix: source
Thrown at packages/app-store/_utils/bulkUpdateEventsToDefaultLocation.ts:29
export const bulkUpdateEventsToDefaultLocation = async ({
eventTypeIds,
user,
prisma,
}: {
eventTypeIds: number[];
user: Pick<User, "id" | "metadata">;
prisma: PrismaLike;
}) => {
const defaultApp = userMetadataSchema.parse(user.metadata)?.defaultConferencingApp;
if (!defaultApp) {
throw new Error("Default conferencing app not set");
}
const foundApp = getAppFromSlug(defaultApp.appSlug);
const appType = foundApp?.appData?.location?.type;
if (!appType) {
throw new Error(`Default conferencing app '${defaultApp.appSlug}' doesnt exist.`);
}
const credential = await prisma.credential.findFirst({
where: {
userId: user.id,
appId: foundApp.slug,
},
select: {
id: true,
},
});
const eventTypesToUpdate = await prisma.eventType.findMany({
where: {
id: {
in: eventTypeIds,
},
userId: user.id,View on GitHub (pinned to 176037d0af)