npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@notiflows/cli

v0.1.0

Published

Notiflows CLI — manage notiflows (notification workflows) as code

Downloads

8

Readme

@notiflows/cli

Manage your Notiflows notification workflows as code. Pull notiflows into version-controlled files, edit them, push them back, and trigger runs — all from your terminal or CI.

Version Downloads/week

The CLI is a thin client over the Notiflows Management API. Full documentation: https://notiflows.com/docs/cli.

Install

npm install -g @notiflows/cli

Or run it without installing: npx @notiflows/cli --help.

This installs two binaries: notiflows and the shorthand nf.

Authenticate

The CLI uses an account token (prefix nf_at_). Create one in the dashboard under Account tokens, then:

notiflows login        # paste the token (or pass --token / set NOTIFLOWS_TOKEN)
notiflows whoami       # confirm the account and project

See Account tokens for how they're scoped and rotated.

Quickstart

notiflows init                              # scaffold notiflows.json
notiflows pull                              # pull notiflows into ./.notiflows
notiflows notiflow push <handle> --publish  # push the draft and publish it

Between pull and push, edit the files under .notiflows/notiflows/<handle>/.

Usage

$ npm install -g @notiflows/cli
$ notiflows COMMAND
running command...
$ notiflows (--version)
@notiflows/cli/0.1.0 linux-x64 node-v22.23.0
$ notiflows --help [COMMAND]
USAGE
  $ notiflows COMMAND
...

Commands

notiflows channel get HANDLE

Get a channel by handle.

USAGE
  $ notiflows channel get HANDLE [--base-url <value>] [--project <value>] [--token <value>] [--json]

ARGUMENTS
  HANDLE  Channel handle

FLAGS
  --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
  --json              Output as JSON
  --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
  --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Get a channel by handle.

EXAMPLES
  $ notiflows channel get sendgrid-primary

See code: src/commands/channel/get.ts

notiflows channel list

List all channels in your project.

USAGE
  $ notiflows channel list [--base-url <value>] [--project <value>] [--token <value>] [--json]

FLAGS
  --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
  --json              Output as JSON
  --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
  --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  List all channels in your project.

EXAMPLES
  $ notiflows channel list

See code: src/commands/channel/list.ts

notiflows diff [HANDLE]

Show differences between local notiflow files and the server.

USAGE
  $ notiflows diff [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--json]

ARGUMENTS
  [HANDLE]  Notiflow handle (omit to diff all local notiflows)

FLAGS
  --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
  --json              Output as JSON
  --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
  --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Show differences between local notiflow files and the server.

EXAMPLES
  $ notiflows diff

  $ notiflows diff welcome-series

  $ notiflows diff --json

See code: src/commands/diff.ts

notiflows help [COMMAND]

Display help for notiflows.

USAGE
  $ notiflows help [COMMAND...] [-n]

ARGUMENTS
  [COMMAND...]  Command to show help for.

FLAGS
  -n, --nested-commands  Include all nested commands in the output.

DESCRIPTION
  Display help for notiflows.

See code: @oclif/plugin-help

notiflows init [PROJECT]

Initialize a Notiflows project in the current directory.

USAGE
  $ notiflows init [PROJECT]

ARGUMENTS
  [PROJECT]  Project slug

DESCRIPTION
  Initialize a Notiflows project in the current directory.

EXAMPLES
  $ notiflows init my-app

  $ notiflows init

See code: src/commands/init.ts

notiflows login

Authenticate the Notiflows CLI with an account token.

USAGE
  $ notiflows login [--base-url <value>] [--token <value>]

FLAGS
  --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
  --token=<value>     Account token (nf_at_...)

DESCRIPTION
  Authenticate the Notiflows CLI with an account token.

EXAMPLES
  $ notiflows login

  $ notiflows login --token nf_at_...

See code: src/commands/login.ts

notiflows logout

Remove stored API credentials.

USAGE
  $ notiflows logout

DESCRIPTION
  Remove stored API credentials.

EXAMPLES
  $ notiflows logout

See code: src/commands/logout.ts

notiflows notiflow activate HANDLE

Activate a notiflow.

USAGE
  $ notiflows notiflow activate HANDLE [--base-url <value>] [--project <value>] [--token <value>] [-f]

ARGUMENTS
  HANDLE  Notiflow handle

FLAGS
  -f, --force             Skip confirmation
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Activate a notiflow.

EXAMPLES
  $ notiflows notiflow activate welcome-series

  $ notiflows notiflow activate welcome-series --force

See code: src/commands/notiflow/activate.ts

notiflows notiflow archive HANDLE

Archive a notiflow.

USAGE
  $ notiflows notiflow archive HANDLE [--base-url <value>] [--project <value>] [--token <value>] [-f]

ARGUMENTS
  HANDLE  Notiflow handle

FLAGS
  -f, --force             Skip confirmation
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Archive a notiflow.

EXAMPLES
  $ notiflows notiflow archive old-flow

  $ notiflows notiflow archive old-flow --force

See code: src/commands/notiflow/archive.ts

notiflows notiflow deactivate HANDLE

Deactivate a notiflow.

USAGE
  $ notiflows notiflow deactivate HANDLE [--base-url <value>] [--project <value>] [--token <value>] [-f]

ARGUMENTS
  HANDLE  Notiflow handle

FLAGS
  -f, --force             Skip confirmation
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Deactivate a notiflow.

EXAMPLES
  $ notiflows notiflow deactivate welcome-series

  $ notiflows notiflow deactivate welcome-series --force

See code: src/commands/notiflow/deactivate.ts

notiflows notiflow get [HANDLE]

Get a notiflow by handle.

USAGE
  $ notiflows notiflow get [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--json]

ARGUMENTS
  [HANDLE]  Notiflow handle (inferred from the current directory if omitted)

FLAGS
  --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
  --json              Output as JSON
  --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
  --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Get a notiflow by handle.

EXAMPLES
  $ notiflows notiflow get welcome-series

  $ notiflows notiflow get welcome-series --json

See code: src/commands/notiflow/get.ts

notiflows notiflow list

List all notiflows in your project.

USAGE
  $ notiflows notiflow list [--base-url <value>] [--project <value>] [--token <value>] [--active <value>] [--json]
    [-q <value>]

FLAGS
  -q, --query=<value>     Search by name or handle
      --active=<value>    Filter by active status (true/false)
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --json              Output as JSON
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  List all notiflows in your project.

EXAMPLES
  $ notiflows notiflow list

  $ notiflows notiflow list --query=welcome

  $ notiflows notiflow list --active=true

See code: src/commands/notiflow/list.ts

notiflows notiflow new [HANDLE]

Create a new notiflow with a minimal configuration.

USAGE
  $ notiflows notiflow new [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [-f] [-n <value>]
    [-p] [-s <value>]

ARGUMENTS
  [HANDLE]  Notiflow handle (immutable slug)

FLAGS
  -f, --force             Skip directory creation confirmation
  -n, --name=<value>      Display name
  -p, --push              Push to server after creation
  -s, --steps=<value>     Comma-separated step types (email, sms, in_app, mobile_push, web_push, chat, webhook, wait,
                          digest, throttle)
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Create a new notiflow with a minimal configuration.

EXAMPLES
  $ notiflows notiflow new

  $ notiflows notiflow new welcome-email --name "Welcome Email"

  $ notiflows notiflow new alerts --steps email,wait,sms

  $ notiflows notiflow new alerts --steps email --push

See code: src/commands/notiflow/new.ts

notiflows notiflow open [HANDLE]

Open a notiflow in the dashboard.

USAGE
  $ notiflows notiflow open [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--dashboard-url
    <value>] [--print]

ARGUMENTS
  [HANDLE]  Notiflow handle (inferred from the current directory if omitted)

FLAGS
  --base-url=<value>       [env: NOTIFLOWS_BASE_URL] API base URL
  --dashboard-url=<value>  [env: NOTIFLOWS_DASHBOARD_URL] Dashboard base URL
  --print                  Print the URL instead of opening a browser
  --project=<value>        [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
  --token=<value>          [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Open a notiflow in the dashboard.

EXAMPLES
  $ notiflows notiflow open welcome-series

  $ notiflows notiflow open --print

See code: src/commands/notiflow/open.ts

notiflows notiflow publish [HANDLE]

Publish the current draft version of a notiflow.

USAGE
  $ notiflows notiflow publish [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [-f]

ARGUMENTS
  [HANDLE]  Notiflow handle (inferred from the current directory if omitted)

FLAGS
  -f, --force             Skip confirmation
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Publish the current draft version of a notiflow.

EXAMPLES
  $ notiflows notiflow publish welcome-series

  $ notiflows notiflow publish welcome-series --force

See code: src/commands/notiflow/publish.ts

notiflows notiflow pull [HANDLE]

Pull notiflow(s) from the server to local files.

USAGE
  $ notiflows notiflow pull [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--all] [-f]

ARGUMENTS
  [HANDLE]  Notiflow handle (omit for --all)

FLAGS
  -f, --force             Overwrite existing files without confirmation
      --all               Pull all notiflows
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Pull notiflow(s) from the server to local files.

EXAMPLES
  $ notiflows notiflow pull welcome-series

  $ notiflows notiflow pull --all

  $ notiflows notiflow pull welcome-series --force

See code: src/commands/notiflow/pull.ts

notiflows notiflow push [HANDLE]

Push notiflow(s) from local files to the server.

USAGE
  $ notiflows notiflow push [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--all] [-f]
    [--publish]

ARGUMENTS
  [HANDLE]  Notiflow handle (omit for --all)

FLAGS
  -f, --force             Overwrite even if the server changed since you pulled
      --all               Push all local notiflows
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --publish           Publish after pushing
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Push notiflow(s) from local files to the server.

EXAMPLES
  $ notiflows notiflow push welcome-series

  $ notiflows notiflow push --all

  $ notiflows notiflow push welcome-series --publish

See code: src/commands/notiflow/push.ts

notiflows notiflow rollback HANDLE

Discard unpublished changes and revert to the published version.

USAGE
  $ notiflows notiflow rollback HANDLE [--base-url <value>] [--project <value>] [--token <value>] [-f]

ARGUMENTS
  HANDLE  Notiflow handle

FLAGS
  -f, --force             Skip confirmation
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Discard unpublished changes and revert to the published version.

EXAMPLES
  $ notiflows notiflow rollback welcome-series

  $ notiflows notiflow rollback welcome-series --force

See code: src/commands/notiflow/rollback.ts

notiflows notiflow run [HANDLE]

Run (trigger) a notiflow. The notiflow must be active and published; the run is attributed to your account token.

USAGE
  $ notiflows notiflow run [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--actor <value>]
    [-d <value>] [--draft] [-r <value>...] [--topic <value>]

ARGUMENTS
  [HANDLE]  Notiflow handle (inferred from the current directory if omitted)

FLAGS
  -d, --data=<value>          Template variables as a JSON object
  -r, --recipient=<value>...  Recipient external_id (repeatable)
      --actor=<value>         external_id of the actor performing the action
      --base-url=<value>      [env: NOTIFLOWS_BASE_URL] API base URL
      --draft                 Run the current unpublished draft instead of the published version
      --project=<value>       [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --token=<value>         [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
      --topic=<value>         Topic to target instead of explicit recipients

DESCRIPTION
  Run (trigger) a notiflow. The notiflow must be active and published; the run is attributed to your account token.

EXAMPLES
  $ notiflows notiflow run welcome-series --recipient user_123

  $ notiflows notiflow run welcome-series -r user_123 -r user_456 --data '{"order_id":"ORD-1"}'

  $ notiflows notiflow run welcome-series --topic order-updates

  $ notiflows notiflow run welcome-series --draft -r user_123  # test the unpublished draft

See code: src/commands/notiflow/run.ts

notiflows notiflow validate [HANDLE]

Validate a notiflow's current draft on the server (push local changes first).

USAGE
  $ notiflows notiflow validate [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--all] [--json]

ARGUMENTS
  [HANDLE]  Notiflow handle (omit for --all)

FLAGS
  --all               Validate all notiflows in the project
  --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
  --json              Output as JSON
  --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
  --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Validate a notiflow's current draft on the server (push local changes first).

EXAMPLES
  $ notiflows notiflow validate welcome-series

  $ notiflows notiflow validate --all

  $ notiflows notiflow validate --all --json

See code: src/commands/notiflow/validate.ts

notiflows notiflow versions HANDLE

List version history for a notiflow.

USAGE
  $ notiflows notiflow versions HANDLE [--base-url <value>] [--project <value>] [--token <value>] [--json]

ARGUMENTS
  HANDLE  Notiflow handle

FLAGS
  --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
  --json              Output as JSON
  --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
  --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  List version history for a notiflow.

EXAMPLES
  $ notiflows notiflow versions welcome-series

See code: src/commands/notiflow/versions.ts

notiflows project get [SLUG]

Show project details.

USAGE
  $ notiflows project get [SLUG] [--base-url <value>] [--json] [--project <value>] [--token <value>]

ARGUMENTS
  [SLUG]  Project slug

FLAGS
  --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
  --json              Output as JSON
  --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug
  --token=<value>     [env: NOTIFLOWS_TOKEN] Account token

DESCRIPTION
  Show project details.

EXAMPLES
  $ notiflows project get my-app

See code: src/commands/project/get.ts

notiflows project list

List all projects in your account.

USAGE
  $ notiflows project list [--base-url <value>] [--json] [--token <value>]

FLAGS
  --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
  --json              Output as JSON
  --token=<value>     [env: NOTIFLOWS_TOKEN] Account token

DESCRIPTION
  List all projects in your account.

EXAMPLES
  $ notiflows project list

See code: src/commands/project/list.ts

notiflows pull

Pull all notiflows from the server to local files.

USAGE
  $ notiflows pull [--base-url <value>] [--project <value>] [--token <value>] [-f]

FLAGS
  -f, --force             Skip confirmation
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Pull all notiflows from the server to local files.

EXAMPLES
  $ notiflows pull

  $ notiflows pull --force

See code: src/commands/pull.ts

notiflows push

Push all local notiflows to the server.

USAGE
  $ notiflows push [--base-url <value>] [--project <value>] [--token <value>] [-f] [--publish]

FLAGS
  -f, --force             Skip confirmation
      --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
      --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
      --publish           Publish all notiflows after pushing
      --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Push all local notiflows to the server.

EXAMPLES
  $ notiflows push

  $ notiflows push --publish

  $ notiflows push --force

See code: src/commands/push.ts

notiflows whoami

Verify API credentials and show account info.

USAGE
  $ notiflows whoami [--base-url <value>] [--project <value>] [--token <value>]

FLAGS
  --base-url=<value>  [env: NOTIFLOWS_BASE_URL] API base URL
  --project=<value>   [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
  --token=<value>     [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)

DESCRIPTION
  Verify API credentials and show account info.

EXAMPLES
  $ notiflows whoami

See code: src/commands/whoami.ts