> ## Documentation Index
> Fetch the complete documentation index at: https://docs.passlet.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Create a workspace, design your first template, and put a pass in a wallet.

This walkthrough takes you from a fresh account to a pass in a real wallet. Everything here happens in the admin console at [app.passlet.io](https://app.passlet.io); if you'd rather automate, see the [API reference](/api-reference/overview) afterwards.

<Steps>
  <Step title="Create your account and workspace">
    Go to [app.passlet.io](https://app.passlet.io) and enter your email — Passlet detects
    whether you're signing in or signing up. New accounts go through a short onboarding:

    1. **Set up your account** — your name and a **workspace name** (typically your company or
       team name).
    2. **Secure your account** — pick how you'll sign in next time. Passkeys are recommended;
       you can also set a password. You can change this later under
       **Settings → Sign-in & security**.

    A **workspace** is the top-level container for everything: templates, passes, team members,
    billing, and API access.

    <Tip>
      If your company already uses Passlet with Enterprise SSO, you may see a
      **"Continue with SSO"** option for your email domain — use that instead of creating a
      separate workspace.
    </Tip>
  </Step>

  <Step title="Create a template">
    From **Overview**, choose **Create a template** (or go to **Templates → Start blank**).
    You can also **Browse Gallery** for starting points curated by Passlet.

    In the create dialog, name the template and choose which wallets it supports — **Apple
    Wallet**, **Google Wallet**, or both. Then design it in the editor:

    * Lay out fields, colors, images, and the barcode for each wallet.
    * Add **variables** — named placeholders (text, number, date, choice) that get filled in
      per pass at issue time, e.g. `attendeeName` or `seat`.
    * Optionally set a **redemption rule** — when the pass is valid and how often it can be
      scanned. See [Redemption & scanning](/guides/redemption-and-scanning).

    When you're happy, click **Publish**. Only templates with a published version can issue
    passes.
  </Step>

  <Step title="Issue your first pass">
    Go to **Passes → Issue passes** (or press **Issue Pass** right from the template editor).

    1. Pick your template.
    2. Fill in a row per pass: a **Label** (the holder's display name), an **External Pass ID**
       (your own reference — or let Passlet auto-generate it), and a value for each template
       variable.
    3. For bulk issuance, use **Import from CSV**.
    4. Click **Issue pass**.

    The pass moves through **Queued → Pending → Issued** within moments. Issuing happens
    asynchronously, so large batches don't block.
  </Step>

  <Step title="Add it to a wallet">
    Open the pass from the **Passes** list. The detail page shows **add-to-wallet links** for
    Apple Wallet and Google Wallet — copy one and open it on a phone to add the pass.

    In production you'd deliver these links by email, SMS, or your own app. See
    [Distributing passes](/guides/distributing-passes).
  </Step>

  <Step title="Scan it (optional)">
    To validate passes at the door, open **Scanner app** in the sidebar and scan the **setup
    QR** with the Passlet Scanner mobile app to connect a device. Scans show up live in the
    pass's **scan history**. See [Redemption & scanning](/guides/redemption-and-scanning).
  </Step>

  <Step title="Automate with the API (optional)">
    Create an access token under **Access tokens** and you can do everything above — and more —
    over REST: issue passes in batches, update pass data, record scans, and receive
    [webhooks](/developers/webhooks) when passes change.

    ```bash theme={null}
    curl -X POST https://api.passlet.io/v1/passes \
      -H "Authorization: Bearer $PASSLET_API_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "templateVersionId": "…",
        "externalPassId": "order-1042",
        "label": "Ada Lovelace",
        "variables": { "attendeeName": "Ada Lovelace" }
      }'
    ```

    See the [API overview](/api-reference/overview) for authentication and scopes.
  </Step>
</Steps>

## Where to next

<CardGroup cols={2}>
  <Card title="Core concepts" icon="book-open" href="/getting-started/concepts">
    The full vocabulary — templates, versions, variables, projects, scanners.
  </Card>

  <Card title="Invite your team" icon="users" href="/guides/team-and-roles">
    Owners, members, and viewers — who can do what.
  </Card>
</CardGroup>
