> ## Documentation Index
> Fetch the complete documentation index at: https://university.triggr-app.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Password Pusher

> Connect Password Pusher, on pwpush.com or self-hosted, to Triggr with your server's hostname and an API token.

Triggr creates expiring Password Pusher links for passwords and files, on pwpush.com or your own server.

## Set up Password Pusher

<Steps>
  <Step title="Find your hostname">
    On pwpush.com, use your region's host, `eu.pwpush.com` or `us.pwpush.com` (the footer shows it; see [data regions](https://docs.pwpush.com/docs/regions/)). A self-hosted server needs HTTPS at a public address, with [Triggr's IP addresses](/security/ip-allowlist) allowed through any firewall.
  </Step>

  <Step title="Copy your API token">
    On pwpush.com, open `/api_tokens` on your region's host, such as `https://eu.pwpush.com/api_tokens`. On a self-hosted server, select **API Token** in your account menu and click the blurred token to reveal it.
  </Step>
</Steps>

## Connect it in Triggr

<Steps>
  <Step title="Open the configuration">
    Go to **Integrations > Password Pusher** and click **Configure** on the Base Configuration card.

    <Frame>
      <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/integrations-common/base-configuration.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=bb81acb082055015f91beda7b4876f35" alt="The Base Configuration card with Status Not Configured, Admin Consent Not Required and a Configure button." width="2272" height="330" data-path="images/integrations-common/base-configuration.png" />
    </Frame>
  </Step>

  <Step title="Enter the host and token">
    Enter the host name alone in Hostname, adding a port only if it isn't 443 (`pwpush.example.com:8443`), and the token in ApiToken. Turn on Allow insecure TLS for a self-signed certificate, then click Save Configuration.

    <Frame>
      <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/password-pusher/configure.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=310e45b65d8ca45ad7ee40409e692b83" alt="The Password Pusher configuration window with ApiToken and Hostname fields, an Allow insecure TLS switch under Advanced, and a Save Configuration button." width="1344" height="1126" data-path="images/password-pusher/configure.png" />
    </Frame>
  </Step>
</Steps>

## Create pushes from workflows

Create a Push (Authenticated) takes JSON in `jsonBody`, in Password Pusher's [JSON API](https://docs.pwpush.com/docs/api-v1/) format. Send the response's `html_url` to the recipient.

```json theme={null}
{
  "password": {
    "payload": "Example-Only-Password-1",
    "expire_after_days": 7,
    "expire_after_views": 3,
    "retrieval_step": true
  }
}
```

* The link expires at whichever limit comes first. `retrieval_step` adds a click-through page so link previews don't use up views; `passphrase` and `note` are optional.
* Create File Push (Authenticated) takes one `file_push[files][]` File row per file in its Form Data (multipart) editor, plus optional Text fields `file_push[payload]`, `file_push[expire_after_days]`, `file_push[expire_after_views]`, `file_push[retrieval_step]` and `file_push[passphrase]`. File pushes need a pwpush.com plan with file uploads, or `PWP__ENABLE_FILE_PUSHES` on your server.
* Create a Push sends no token, so it only works on servers that allow anonymous pushes. Retrieving a push by its `urlToken` counts as a view.

## Troubleshooting

<AccordionGroup>
  <Accordion title="401 Unauthorized from an authenticated action">
    Check ApiToken is current, pasted in full, and from the same server or region as Hostname.
  </Accordion>

  <Accordion title="401 Unauthorized from Create a Push">
    The server doesn't accept anonymous pushes. Use Create a Push (Authenticated).
  </Accordion>

  <Accordion title="Triggr can't reach the server">
    Check Hostname has no `https://` or path, and uses your region's host rather than `pwpush.com`. For certificate errors, turn on Allow insecure TLS.
  </Accordion>

  <Accordion title="File pushes fail with 400 param is missing">
    Every field name must start with `file_push[`. Check your plan includes file uploads, or set `PWP__ENABLE_FILE_PUSHES` on your server.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.