> ## 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.

# Zapier

> Connect Passlet to Zapier with dynamic pass actions and signed lifecycle triggers.

The Passlet Zapier app lets a Zap issue and manage passes, send notifications, find existing
passes, and start workflows from pass lifecycle or scan events. Project, template, pass, and
template-variable fields load from your workspace while you configure each step.

<Note>
  This integration is currently a developer preview. The repository contains the complete app, but
  it must be linked to a private Zapier integration or shared by invitation until Passlet completes
  Zapier's public review and publishing process.
</Note>

## Connect your account

<Steps>
  <Step title="Create an access token">
    In Passlet, open **Access tokens** and create a token for Zapier. Copy the `plt_...` value when
    it is shown; Passlet does not display it again.
  </Step>

  <Step title="Choose scopes">
    Grant only the scopes used by your Zaps. A connection that uses every available Zapier step
    needs:

    * `templates:read` for project, published-template, and template-variable fields
    * `passes:read` for pass choices, Find Pass, and live trigger samples
    * `passes:write` to create or void passes and revoke links
    * `pass-notifications:write` to send pass or project notifications
    * `webhooks:write` for lifecycle and scan triggers
    * `scans:read` for live Pass Scanned samples
  </Step>

  <Step title="Add Passlet in Zapier">
    In a linked private or invited Passlet integration, add a Passlet step, choose **Connect a new
    account**, and paste the access token. Zapier tests the token against your workspace without
    requiring an unrelated API scope.
  </Step>
</Steps>

<Warning>
  Treat the access token like a password. Store it only in the Zapier connection, and rotate or
  revoke it from Passlet if it is exposed.
</Warning>

## Available steps

| Type    | Step                           | What it does                                                                                 |
| ------- | ------------------------------ | -------------------------------------------------------------------------------------------- |
| Action  | Create Pass                    | Issues one pass from a published template. Template-specific variables appear automatically. |
| Action  | Void Pass                      | Permanently voids a pass; a retry after it is already voided succeeds safely.                |
| Action  | Revoke Pass Links              | Invalidates the current hosted Apple and Google Wallet links.                                |
| Action  | Send Pass Notification         | Sends or schedules a message for one issued pass.                                            |
| Action  | Broadcast Project Notification | Sends or schedules a message for issued passes in a project.                                 |
| Search  | Find Pass                      | Finds one pass by its tenant-unique external pass ID.                                        |
| Trigger | Pass Issued                    | Runs after asynchronous issuance succeeds and wallet links are ready.                        |
| Trigger | Pass Updated                   | Runs after pass data or its template version changes.                                        |
| Trigger | Pass Voided                    | Runs when a pass becomes `VOID` or expires.                                                  |
| Trigger | Pass Failed                    | Runs when asynchronous issuance fails.                                                       |
| Trigger | Pass Scanned                   | Runs for every recorded accepted or denied scan.                                             |

You can type an ID directly in dropdown fields when it comes from an earlier Zap step. Published
template choices are filtered automatically, so draft-only templates do not appear.

## Create a pass and deliver it

**Create Pass** requires an external pass ID, label, and published template. The external ID comes
from your source system, such as an order or membership ID. It makes retries idempotent: sending the
same ID again returns the existing pass instead of creating a duplicate.

Passlet accepts the action asynchronously and initially returns `QUEUED`. Apple and Google hosted
links are not ready at that point. Use **Pass Issued** as the trigger for a second Zap that sends the
wallet links by email, SMS, or another channel. Use **Pass Failed** to route issuance failures for
review.

<Note>
  Template variables are loaded from the selected template's published version. Changing the
  template refreshes those fields without a hand-maintained Zapier definition file.
</Note>

## How triggers work

When you enable a Zap with a Passlet trigger, Zapier gives Passlet a private callback URL. The
integration creates a Zapier-owned webhook subscription for the selected event. When you disable
or delete the Zap, it removes that subscription automatically.

Each delivery is HMAC-signed. The integration verifies the signature against the raw request body,
rejects stale signatures, ignores other event types, and returns Passlet's stable event ID to
Zapier for deduplication. You do not need to create a webhook endpoint or manage a signing secret
yourself.

Connector-managed endpoints cannot be edited or toggled on the Passlet **Webhooks** page, keeping
their normal lifecycle in sync with Zapier. A workspace owner can force-remove an orphaned
endpoint if Zapier can no longer unsubscribe it; reconnect the Zap afterwards. For custom
receivers and signature details, see [Webhooks](/developers/webhooks).

## Maintaining the integration

The Zapier app is a TypeScript application, not a Power Automate connector definition. Repetitive
API types, webhook examples, and output fields are generated from Passlet's public OpenAPI contract.
Step names, field labels, dynamic template variables, authentication, and trigger lifecycle stay
hand-curated for Zapier's interface. Contract drift, type checks, tests, and Zapier validation run
before release. Pushing, promoting, and submitting the app for Zapier review are explicit release
steps and require Zapier deployment credentials.
