Share a Sigma dashboard
Sigma is built for people who work in Sigma. The recurring distribution problem is everyone else: the board member who reads one page a month, the client paying for the analysis, the vendor who needs their own numbers and nothing else.
Both official answers — a seat, or an embed integration — are large for a recurring email.
Export and render
# one CSV per workbook element, exported from Sigma
python - <<'PY'
import pandas as pd, pathlib
parts = []
for csv in sorted(pathlib.Path("exports").glob("*.csv")):
df = pd.read_csv(csv)
parts.append(f"<h2>{csv.stem.replace('-', ' ').title()}</h2>")
parts.append(df.to_html(index=False, float_format="%.2f"))
pathlib.Path("sigma.html").write_text(
"<style>body{font:14px/1.5 system-ui;margin:2rem}"
"table{border-collapse:collapse}td,th{border:1px solid #ddd;padding:.4rem .6rem}</style>"
+ "".join(parts)
)
PY
Then publish it:
curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
-H "Authorization: Bearer $COMMA_API_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile html sigma.html \
--arg title "Monthly numbers — $(date +%B\ %Y)" '{title: $title, html: $html}')"
What the published copy adds
- Anchored threads — "is this net or gross?" sits on the cell, and the answer stays there for whoever reads it next. See commenting on HTML.
- Revisions at one URL — one report id for the monthly pack; the link in the calendar invite never rots.
- Access per report — unlisted, domain-gated, team-only, or private. See the sharing model.
- A schedule — scheduled HTML reports publish the refresh for you.
Limits
- Entry HTML: 5 MB. Tables of raw rows get there quickly — aggregate for the shared copy and attach the full extract as an asset.
- Assets: 25 MB per file, 250 MB and 500 files per report.
- 60 requests/minute per token.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.