---
title: Resuming journeys using magic links in JavaScript
description: Learn how to suspend and resume authentication journeys using magic links in your JavaScript application.
component: orchsdks
page_id: orchsdks:journey:use-cases/magic-links/javascript-magic-links
canonical_url: https://developer.pingidentity.com/orchsdks/journey/use-cases/magic-links/javascript-magic-links.html
revdate: Thu, 19 Feb 2026 14:24:00 +0000
keywords: ["PingOne Advanced Identity Cloud", "PingAM", "Journeys", "JavaScript", "Magic Links", "Suspended Authentication", "Resume", "Setup &amp; Configuration", "Source Code", "Use Case", "SDK"]
---

# Resuming journeys using magic links in JavaScript

[icon: circle-check, set=far]PingOne Advanced Identity Cloud [icon: circle-check, set=far]PingAM [icon: js, set=fab]JavaScript

When the user clicks the magic link in their email, it launches your JavaScript login UI app in their browser.

|   |                                                                                                                                                                                                                                                           |
| - | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|   | If the magic link doesn't open your JavaScript login app, ensure you have correctly configured your server's **External Login Page URL** property.Learn more in [Configuring servers for suspended authentication](index.html#server-config-magic-links). |

Contained within the magic link is the unique `suspendedID` parameter, which allows the server to resume the authentication journey, and restore any state it has captured so far.

Use the **Journey** client's `resume()` method, rather than `start()`, to continue the journey. You must pass in the URI that contains the `suspendedID` parameter:

Resuming a journey in a JavaScript login app

```js
const client = await journey({
  config: {
    serverConfig: {
      wellknown: 'https://signon.example.com/.well-known/openid-configuration',
    },
  },
});

const url = new URL(window.location.href);
const urlHasSuspendedId = url.searchParams.get("suspendedId");

if (urlHasSuspendedId) {
  // Resume existing journey, rather than starting a new one
  let step = await client.resume(url);
}
```
