Migrate to Kinde for user authentication
Get started
Migrate your users from AWS Cognito to Kinde. The main constraint is that Cognito does not allow password export, so a direct password migration is not possible — drip-feed migration is the recommended path.
user:existing_password_provided workflow, you can validate each user’s password against Cognito on first login and migrate them seamlessly with no password reset required.Cognito has no UI export. Use the AWS CLI to list users from your User Pool:
aws cognito-idp list-users \ --user-pool-id YOUR_USER_POOL_ID \ --region YOUR_AWS_REGION \ --query 'Users[*].{email:Attributes[?Name==`email`].Value|[0], sub:Username, name:Attributes[?Name==`name`].Value|[0]}' \ --output json > cognito-users.jsonFor large user pools, use --pagination-token to page through results, or use a script to loop until all users are retrieved.
Convert the JSON output to a Kinde-compatible CSV. The id field should be the Cognito sub (the user’s UUID in Cognito).
id,email,first_name,last_name,email_verified{sub},{email},{given_name},{family_name},TRUEFor the full list of supported CSV fields — including organizations, roles, and permissions — see Prepare your CSV in the bulk import guide.
Migrate users with no downtime and no password resets. On first login, a Kinde workflow validates the user’s password against Cognito using the ADMIN_USER_PASSWORD_AUTH flow. If valid, the user is created in Kinde and their password is set.
Before you start:
ADMIN_USER_PASSWORD_AUTH is enabled on your Cognito App Client.The drip-feed migration tutorial includes the Cognito-specific workflow code.
If drip-feed is not an option, import users by email only. Users will be prompted to set a new password or sign in via a passwordless method on first sign-in.
If you need help with your migration, contact Kinde support.