@@ -249,6 +249,9 @@ function SignupFormContent({
249249 widget . execute ( )
250250 token = await widget . getResponsePromise ( )
251251 } catch {
252+ captureEvent ( posthog , 'signup_failed' , {
253+ error_code : 'captcha_client_failure' ,
254+ } )
252255 setFormError ( 'Captcha verification failed. Please try again.' )
253256 setIsLoading ( false )
254257 return
@@ -272,7 +275,9 @@ function SignupFormContent({
272275 logger . error ( 'Signup error:' , ctx . error )
273276 const errorMessage : string [ ] = [ 'Failed to create account' ]
274277
278+ let errorCode = 'unknown'
275279 if ( ctx . error . code ?. includes ( 'USER_ALREADY_EXISTS' ) ) {
280+ errorCode = 'user_already_exists'
276281 errorMessage . push (
277282 'An account with this email already exists. Please sign in instead.'
278283 )
@@ -281,31 +286,39 @@ function SignupFormContent({
281286 ctx . error . code ?. includes ( 'BAD_REQUEST' ) ||
282287 ctx . error . message ?. includes ( 'Email and password sign up is not enabled' )
283288 ) {
289+ errorCode = 'signup_disabled'
284290 errorMessage . push ( 'Email signup is currently disabled.' )
285291 setEmailError ( errorMessage [ 0 ] )
286292 } else if ( ctx . error . code ?. includes ( 'INVALID_EMAIL' ) ) {
293+ errorCode = 'invalid_email'
287294 errorMessage . push ( 'Please enter a valid email address.' )
288295 setEmailError ( errorMessage [ 0 ] )
289296 } else if ( ctx . error . code ?. includes ( 'PASSWORD_TOO_SHORT' ) ) {
297+ errorCode = 'password_too_short'
290298 errorMessage . push ( 'Password must be at least 8 characters long.' )
291299 setPasswordErrors ( errorMessage )
292300 setShowValidationError ( true )
293301 } else if ( ctx . error . code ?. includes ( 'PASSWORD_TOO_LONG' ) ) {
302+ errorCode = 'password_too_long'
294303 errorMessage . push ( 'Password must be less than 128 characters long.' )
295304 setPasswordErrors ( errorMessage )
296305 setShowValidationError ( true )
297306 } else if ( ctx . error . code ?. includes ( 'network' ) ) {
307+ errorCode = 'network_error'
298308 errorMessage . push ( 'Network error. Please check your connection and try again.' )
299309 setPasswordErrors ( errorMessage )
300310 setShowValidationError ( true )
301311 } else if ( ctx . error . code ?. includes ( 'rate limit' ) ) {
312+ errorCode = 'rate_limited'
302313 errorMessage . push ( 'Too many requests. Please wait a moment before trying again.' )
303314 setPasswordErrors ( errorMessage )
304315 setShowValidationError ( true )
305316 } else {
306317 setPasswordErrors ( errorMessage )
307318 setShowValidationError ( true )
308319 }
320+
321+ captureEvent ( posthog , 'signup_failed' , { error_code : errorCode } )
309322 } ,
310323 }
311324 )
0 commit comments