ACUL signup not attaching phone number

Im currently trying to create a custom signup flow with ACUL. Im using the SignupOptions interface to pass data to auth0, but the field phone is not working. I have also tried to add custom fields as phoneNumber and phone_number but nothing seems to set the users phone number on the auth0 user object.

Im using this interface provided by the SDK:

export interface SignupOptions {
email?: string;
username?: string;
phone?: string;
captcha?: string;
[key: string]: string | number | boolean | undefined;
}

This is the payload printed before its sendt:

Object { email: "``amund.fremming+test10@gmail.com``", username: "", phone: "41387142", captcha: "", given_name: "Amund", family_name: "Fremming" }

And this is the auth0 user object after user creation:

{
“user_id”: “auth0|6a0fff6efd418ca80717c92e”,
“created_at”: “2026-05-22T07:02:06.203Z”,
“email”: “``amund.fremming+test10@gmail.com``”,
“email_verified”: false,
“identities”: [
{
“connection”: “Username-Password-Authentication”,
“provider”: “auth0”,
“user_id”: “6a0fff6efd418ca80717c92e”,
“isSocial”: false
}
],
“name”: “``amund.fremming+test10@gmail.com``”,
“nickname”: “amund.fremming+test10”,
“picture”: “``https://s.gravatar.com/avatar/6ba82f81c0780dddecea0636dbead9d3?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fam.png”``,
“updated_at”: “2026-05-22T07:02:06.203Z”,
“user_metadata”: {},
“app_metadata”: {
“given_name”: “Amund”,
“family_name”: “Fremming”
},
“last_ip”: “109.74.183.126”,
“last_login”: “2026-05-22T07:02:06.196Z”,
“logins_count”: 1,
“guardian_authenticators”:,
“blocked_for”:,
“passkeys”:
}

Hi @amund.fremming

Thank you for reaching out to us!

I understand that you are trying to pass custom phone_number fields to Auth0, via the SignupOptions interface.

The reason the phone number is not being saved is that Auth0’s standard database Connections drop root phone or phone_number attributes during an email/password signup. Most commonly they need to be explicitly saved into the user_metadata object, however the SignupOptions interface prevents you from sending a nested user_metadata: { phone: “…” } object directly from the frontend.

The solution would be to keep sending the phone: "41387142" field in your SDK payload and then capturing it using an Auth0 Pre-User Registration Action to assign it to user_metadata. When the ACUL SDK makes the signup request, any extra properties you added to the SignupOptions object are exposed in the Action under event.request.body and the Pre-User Registration Action code can look similar to the following:

exports.onExecutePreUserRegistration = async (event, api) => {
  // Extract the phone value sent from the frontend ACUL SignupOptions
  const phone = event.request.body.phone || event.request.body.phone_number;
  
  if (phone) {
    // Explicitly attach it to the newly created user's metadata
    api.user.setUserMetadata("phone_number", phone);
  }
};

Hope this helped, please do not hesitate to reach out for any other issues or requests!

Best regards,
Gerald

Hello @gerald.czifra thanks for the reply.

Why is phone_number dropped on email/password signup? And if I have to use a Pre-User Registration Action just to persist the phone into user_metadata, this will break the phone verification auth0 provides, since it cant set phone verified on a non existing phone number. And if i try to add the phone number to the user object pre registration it will not work as you just mentioned.

So the result of this is i’d end up working around both storage and verification, which defeats the point of using Auth0 for it.

Is there a supported way to pass phone_number through SignupOptions so it works with the built-in verification flow?

Thanks