# Share without code (https://www.getfounderhq.com/docs/journeys/share)

Three ways to open a Journey that need no code. All three live on
`https://journeys.getfounderhq.com` and are set from the **Share** button in
the Journey editor.

| Surface | URL | Shows | Who can open it |
| --- | --- | --- | --- |
| Public link | `journeys.getfounderhq.com/<journeyId>` | the published version | anyone with the link, while sharing is on |
| Embed | `journeys.getfounderhq.com/embed/<journeyId>` in an iframe | the published version | any website, while sharing is on |
| Phone preview | `journeys.getfounderhq.com/p/<token>` | your latest saved version | anyone with the link, for 24 hours |

## Published means published

Saving a Journey stores a draft. Only **Publish to Live** changes what people
see: through the SDK, the public link, and the embed. Your version history
marks the live version and the latest saved one.

## Preview on your phone

Open **Share** in the editor and scan the QR code. The preview shows the last
version you saved, published or not, so you can test a flow before it goes
live. It records nothing: no responses, no analytics. Reload the page on your
phone after each save to see the change.

Preview links expire after 24 hours. Scan again for a new one.

Shared a preview link with someone and want it dead sooner? Hover the QR code
and press **Regenerate**. Every earlier preview link for that Journey stops
working at once, and you get a fresh code.

## Public link

Turn on **Anyone with the link can open this Journey**. The Journey must be
published first. Turn the switch off at any time to close the link; open pages
stop recording within minutes.

The page is not indexed by search engines. Responses and events land in the
same place as SDK captures, tagged with the `hosted-link` surface.

## Embed on a website

Copy the snippet from **Share** and paste it where the Journey should appear.

```html
<iframe src="https://journeys.getfounderhq.com/embed/JOURNEY_ID"
  title="Onboarding" width="420" height="760"
  style="border:0;border-radius:24px" loading="lazy"
  allow="clipboard-write"></iframe>
```

The iframe is the Journey's viewport, so pick a size that fits your page. The
same switch that controls the public link controls the embed. Captures are
tagged with the `hosted-embed` surface and the origin of the page that frames
them.

### Inside a drawn device frame

If your page draws a phone frame around the iframe, add
`?safeArea=top,right,bottom,left` (pixels) to the embed URL. The Journey keeps
its controls clear of those edges while its background still fills the frame.

```html
<iframe src="https://journeys.getfounderhq.com/embed/JOURNEY_ID?safeArea=22,0,18,0" …></iframe>
```

### Messages from the embed

The embed posts a small set of messages to the page that frames it, so your
page can react (close a modal, show a thank-you). Listen with
`window.addEventListener("message", …)` and check `event.data.source`.

```ts
window.addEventListener("message", (event) => {
  const data = event.data;
  if (!data || data.source !== "founderhq-journeys" || data.version !== 1) return;
  if (data.event === "complete") {
    // data.journeyId — the Journey that finished
  }
});
```

| `event` | Extra fields | When |
| --- | --- | --- |
| `ready` | — | the first screen rendered |
| `step` | `stepId`, `index` | the visible step changed |
| `complete` | — | the person finished the Journey |

Messages carry no answers, identity, or URLs. Links inside the Journey open in
a new tab from the iframe itself.

## Prefer code?

The [web SDK](/journeys/embed-on-the-web) and the [mobile SDKs](/journeys/mobile)
give you a publishable key, identity linking, and full control of the page.
