Jobs & Monitoring

Track the progress of sync and publish jobs, check your connection status, and trigger instant Notion polls — from the terminal or any script.

notipo status

Shows whether Notion and WordPress are connected, your current plan, and the effective plan (Trial downgrades to Free after expiry).

notipo status
{
  "notion": {
    "configured": true,
    "databaseId": "1f5842af-972f-8071-b1fc-e01d2c3f4a5b"
  },
  "wordpress": {
    "configured": true,
    "siteUrl": "https://yourblog.com"
  },
  "plan": "PRO",
  "effectivePlan": "PRO"
}

notipo sync

Triggers an immediate Notion poll for your tenant. Notipo scans your database for any pages with a trigger status (Post to Wordpress, Publish, Update Wordpress) and processes them right away without waiting for the next scheduled poll. Requires the Pro plan with a 15-second cooldown.

notipo sync
{
  "ok": true,
  "message": "Sync triggered. Run `notipo jobs` to monitor progress."
}

notipo jobs

Lists recent sync and publish jobs with their status, step-by-step progress, and error details on failure. Use this to monitor in-progress jobs, confirm completion, or diagnose failures.

notipo jobs
[{
  "id": "jb9a1b2c-3d4e-5f6g-7h8i-9j0k1l2m3n4o",
  "type": "SYNC_POST",
  "status": "COMPLETED",
  "post": { "title": "Why Every Developer Should Have a Blog" },
  "result": {
    "steps": ["Fetching from Notion…", "Uploading images…", "Creating WP draft…"],
    "wpPostId": 1003934,
    "wpUrl": "https://yourblog.com/wp-admin/post.php?post=1003934&action=edit"
  }
}]

Job statuses

StatusMeaning
PENDINGQueued, not yet picked up
RUNNINGPipeline is actively executing
COMPLETEDSuccess — check result.wpUrl for the WordPress link
FAILEDPipeline failed — check result.error for the reason

Exit Codes

The CLI follows the standard Unix convention — scripts and agents can branch on the exit code without parsing output.

CodeMeaning
0Success — JSON result on stdout
1Error — JSON error object on stderr with a message field
# stderr on error (exit code 1)
{
  "message": "WordPress connection not configured"
}

Using with AI Agents

The CLI is designed as an MCP-compatible tool that AI agents can call directly. JSON on stdout, errors on stderr with non-zero exit codes — the standard contract for agent-friendly tools. An agent can write and publish a full blog post to WordPress without touching a browser:

1Agent generates post content — title, body, category, SEO keyword
2Agent calls: notipo posts create --title "..." --body "..." --category "..." --seo-keyword "..." --publish --wait
3CLI blocks while Notipo runs the full pipeline (Notion → Gutenberg → images → featured image → SEO → WordPress)
4CLI returns JSON with status COMPLETED and the live wpUrl
5Agent returns the live URL to the user — done, no browser opened

CI/CD Example

Add NOTIPO_URL and NOTIPO_API_KEY as repository secrets, then call the CLI in any workflow step:

# .github/workflows/publish.yml
- name: Publish post via Notipo
  run: |
    npx notipo posts create \
      --title "${{ env.POST_TITLE }}"
      --category "Release Notes"
      --publish --wait
  env:
    NOTIPO_URL: ${{ secrets.NOTIPO_URL }}
    NOTIPO_API_KEY: ${{ secrets.NOTIPO_API_KEY }}