4 June 2025
CustomersMessages/SubscriptionsGraphQL
We've improved how email verification and password reset tokens are managed to support more secure login flows. The key changes are as follows:
- Password reset tokens are valid for 24 hours by default (down from 24 days).
 - Older tokens for email verification or password reset can be invalidated when a new token is created.
 - Older tokens for email verification or password reset are invalidated when a token is successfully redeemed.
 - An error is returned when attempting to redeem an expired email verification or password reset token.
 
Additionally, if a token's validity is 60 minutes or less, the token is now included in the Message payload to help you build better asynchronous flows.
Changes:
- [API] Added 
invalidateOlderTokensfield to CustomerToken, CustomerCreateEmailToken, and CustomerCreatePasswordResetToken in Customers API. - [API] Added 
valueandinvalidateOlderTokensfields to CustomerEmailTokenCreated and CustomerPasswordTokenCreated Messages. - [API] Added ExpiredCustomerEmailToken and ExpiredCustomerPasswordToken errors.
 - [GraphQL API] Added 
invalidateOlderTokensfield to theCustomerEmailTokentype. - [GraphQL API] Added 
invalidateOlderTokensfield to theCustomerPasswordTokentype. - [GraphQL API] Added 
valueandinvalidateOlderTokensfields to theCustomerEmailTokenCreatedtype. - [GraphQL API] Added 
valueandinvalidateOlderTokensfields to theCustomerPasswordTokenCreatedtype. - [GraphQL API] Added 
invalidateOlderTokensargument to theMutation.customerCreateEmailVerificationTokenfield. - [GraphQL API] Added 
invalidateOlderTokensargument to theMutation.customerCreatePasswordResetTokenfield. - [GraphQL API] Changed the 
Mutation.customerCreatePasswordResetTokendescription. 
The following changes were introduced in terms of GraphQL SDL:
extend type CustomerEmailToken {
  invalidateOlderTokens: Boolean!
}
extend type CustomerPasswordToken {
  invalidateOlderTokens: Boolean!
}
extend type CustomerEmailTokenCreated {
  invalidateOlderTokens: Boolean!
  value: String
}
extend type CustomerPasswordTokenCreated {
  invalidateOlderTokens: Boolean!
  value: String
}