rae.kiR
Convex Community6mo ago
7 replies
rae.ki

Setting up Convex with Clerk

I followed the guide here: https://docs.convex.dev/auth/clerk#get-started but in my Clerk webhooks dashboard, I keep getting failed status. It also doesn't remove the users from the DB when they are deleted. I attached a video of this flow, sorry about the quality. This is the relevant code snippets:

http.route({
  path: "/clerk-users-webhook",
  method: "POST",
  handler: httpAction(async (ctx, request) => {
    const event = await validateRequest(request);
    if (!event) {
      return new Response("Error occured", { status: 400 });
    }
    switch (event.type) {
       ...
      case "user.deleted": {
        const clerkUserId = event.data.id!;
        await ctx.runMutation(internal.users.deleteFromClerk, { clerkUserId });
        break;
      }
      ...
    return new Response(null, { status: 200 });
  }),
});
...
export const deleteFromClerk = internalMutation({
  args: { clerkUserId: v.string() },
  async handler(ctx, { clerkUserId }) {
    const user = await userByExternalId(ctx, clerkUserId);

    if (user !== null) {
      await ctx.db.delete(user._id);
      return;
    } else {
      console.warn(
        `Can't delete user, there is none for Clerk user ID: ${clerkUserId}`,
      );
      return;
    }
  },
});
Was this page helpful?