Skip to content
masterclassBuddyTech Buzz5 fresh blogs · 5:00 AM IST

Clerk · Class

ExternalAccount

ExternalAccount represents a verified identity supplied by an external provider such as Google. It exposes provider metadata, granted scopes, account identifiers, and methods to reauthorize or delete the connection.

How it works

ExternalAccount represents a verified identity obtained through an external provider. It exposes provider and account details, verification-related state, and operations for reauthorizing or deleting the connected account.

Syntax

function reauthorize(params: ReauthorizeExternalAccountParams): Promise<ExternalAccount>

Parameters

NameTypeDescription
paramsReauthorizeExternalAccountParamsParameters required to reauthorize the existing external account.

Returns

reauthorize(params: ReauthorizeExternalAccountParams): Promise<ExternalAccount>; destroy() deletes the external account.

Key points

  • ExternalAccount models a provider-issued identity, such as a social-login identity.
  • Verification is required so the external identity can be associated with its rightful user.
  • approvedScopes records the permissions the user granted to the provider.
  • providerUserId identifies the user within the external provider.
  • reauthorize() begins authorization again for an already connected account.
  • destroy() removes the external-account connection.

Common mistakes

  • The username property is available only when username is enabled in the Clerk instance settings.
  • accountIdentifier() selects a username when present and otherwise uses the email address.

Example: Inspect and manage an external account

const account = user.externalAccounts[0];

console.log(account.providerTitle());
console.log(account.accountIdentifier());

await account.reauthorize({});
await account.destroy();

Uses an existing external account from a Clerk User, displays provider-derived labels, then demonstrates reauthorization and deletion.

When to use it

Show connected provider accounts

Account settings

Reauthorize an existing provider connection

Authorization maintenance

Remove an external account

Account cleanup

Interview questions

QWhat does ExternalAccount represent?

ExternalAccount models an identity obtained from an external provider such as Google. It must be verified, and the object retains the state needed for that verification process.

Follow-up: How would you identify the account for display? Use accountIdentifier(), which prefers username and falls back to emailAddress.

QHow do you refresh authorization for an external account?

reauthorize() starts a new authorization flow for an existing external account and returns a Promise<ExternalAccount>. It accepts ReauthorizeExternalAccountParams.

Follow-up: What operation removes the connection? Call destroy() on the external-account instance.

QWhich methods help present an external account in a UI?

providerTitle() returns the provider name with “Account” appended, while accountIdentifier() returns a useful username-or-email identifier. These methods provide display-oriented values without manually formatting the raw properties.

Follow-up: What provider-specific value is available? providerUserId contains the user's unique ID at the external provider.

  • User.externalAccounts
  • VerificationResource
  • ReauthorizeExternalAccountParams
  • createExternalAccount()

Source: ExternalAccount - Types. Checked 2026-10-15.