---
title: "Cron Funnel Report"
method: POST
path: "/cron/funnel-report"
tags: ["cron"]
---

# Cron Funnel Report

`POST /cron/funnel-report`

## Request

- Base URL: `https://api.equity-rank.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.equity-rank.com/cron/funnel-report`
- Auth: none declared

Build the weekly funnel report (sessions->captures->free signups->
activation->trial->paid, split by signup_source) and email it to the owner.

Runs synchronously so a manual caller sees the full result. Scheduled weekly
by APScheduler (Mondays 08:00 UTC, job id funnel_report_weekly). Auth:
X-Cron-Secret.

dry_run=true: build the report but do NOT send — returns counts/deltas/markdown
(the markdown key is what backend/scripts/generate_funnel_report.py fetches
to write the committed .planning/growth/reports/ archive copy).

## Query parameters

- `dry_run` boolean

## Headers

- `X-Cron-Secret` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/equity-rank/apis/equity-rank-api.md) · [All operations](https://skmtc.dev/equity-rank/apis/equity-rank-api/llms.txt) · [OpenAPI document](https://skmtc.dev/equity-rank/apis/equity-rank-api/revisions/c2f2463fee33?raw)
