# Guest invitation at booking or check-in
> Source: /guides/patterns/guest-invites
> Invite an unlinked guest so their stay is credited to their Journey membership.

When a guest stays with you but is not linked to a Journey member, the stay's
points sit in escrow rather than landing in a wallet. This pattern closes that
gap at the moment you have the guest's attention — at booking, or at the desk.

## The sequence [#the-sequence]

<Steps>
  <Step title="Find unlinked stays">
    `GET /v1/partner/reservations` with the `memberLinked` filter to isolate
    guests who are not yet linked to a member.
  </Step>
  <Step title="Send the invite">
    The `vguests` guest-invite endpoint sends by **email or SMS**. You supply
    the channel, the contact value, the originating app, and the brand, venue
    and reservation context.
  </Step>
  <Step title="The guest claims">
    The guest follows the link, and linking assigns the stay to their
    membership.
  </Step>
</Steps>

## Timing matters [#timing-matters]

<Warning>
  **An unlinked stay's escrowed points expire after a 30-day claim window.**
  Invite early. An invite sent after the window has closed will still link the
  guest, but the points from that stay are gone.
</Warning>

- **SMS links are short-lived** — about an hour. Send SMS when the guest is in
  front of you, not as part of an overnight batch.
- **The public invite-send route is rate limited.** It is designed for
  interactive use, not bulk sending. Handle 429 with backoff.

## How linking actually decides [#how-linking-actually-decides]

Understanding this saves a lot of "why didn't it link" tickets:

- The reservation's guest email or phone is matched against the member's
  **verified** contacts — unverified contacts do not count.
- If a contact matches, the name is then compared with fuzzy matching.
- Outcomes are **auto-link** (contact and name both match), **queued for human
  review** (name mismatch, or phone and email point at different members), or
  **no link**.

Linking is re-evaluated at several points, not just at import: when a member
verifies a new contact, when a guest follows a claim link, when they claim by
id, and when an administrator resolves a queued case. A stay that did not link
on day one can still link later.

## Scopes and PII [#scopes-and-pii]

Guest invites touch personal data, so they require the guest PII permission in
addition to the general guest read permission. Without it, the guest contact
fields you need will be masked.

Partners do not configure member messaging. Journey sends member-facing
notifications; the invite endpoint is the transactional exception you trigger
directly.
