Daily signup digest in Slack

Get a written read on yesterday's new signups posted to Slack every weekday at 9am, with the headline number, trend, and what changed.

Agentic Task
PostgreSQLSlackOperationsProductDaily DigestsAI Reports

Every weekday at 9:00 AM Eastern Time, run a daily signup digest for me and post it to Slack. The goal is a short, qualitative read on yesterday's new signups, not a raw numbers dump. The value of this workflow is the written interpretation on top of the numbers.

Trigger: cron, every weekday (Monday through Friday) at 09:00 America/New_York.

Step 1. Run a PostgreSQL Custom Query against my users table. I will plug in the exact table name, the signup timestamp column, the plan tier column, the acquisition source column, and the country column when I configure the workflow, so write the SQL with clearly labeled placeholders for those fields. The query should return: (a) the total count of new signups in the last 24 hours, (b) yesterday's signup count broken out by plan tier, by acquisition source, and by country, and (c) daily signup counts for each of the previous 7 days so a rolling 7-day average can be computed and compared against yesterday's number.

Step 2. Write a short narrative summary in plain English based on the query results. The structure should be: a single big headline number at the top showing total signups in the last 24 hours and how that compares to the 7-day average (e.g. up 18% vs average, down 30%, in line). Below the headline, use bullet points to call out what's up, what's down, and anything anomalous worth attention. Examples of things to flag: a spike from a specific country, a quiet day on a paid plan tier, a new acquisition source appearing for the first time, an unusually strong or weak channel, a streak ending. Do not just dump every count. Interpret the data and only call out what changed or what's notable.

Step 3. Send the message to a Slack channel I will specify, using the Slack Send a Message action. Format the message with Slack mrkdwn: bold the headline number, use bullet points for the breakdown, and keep the whole thing skimmable in under 20 seconds. No tables, no code blocks, no giant data dumps.

Edge cases: if yesterday had zero signups, still post a short message that says so, plus the 7-day context, so the channel knows the workflow ran. If the database query fails, post a one-line error message to the same channel so I notice it the next morning instead of silently missing a day.

Additional information

What does this prompt do?
  • Counts yesterday's new signups from your database, broken down by plan tier, acquisition source, and country.
  • Compares the day's number to a 7-day rolling average so you see trend, not just a raw total.
  • Writes a short, plain-English read on what's up, what's down, and anything anomalous worth attention.
  • Posts the digest to the Slack channel you pick, every weekday morning at 9am Eastern.
What do I need to use this?
  • A PostgreSQL database with a signups or users table you can query.
  • A Slack workspace where you can connect your account and pick a channel for the digest.
  • The names of the columns that store the signup timestamp, plan tier, acquisition source, and country.
How can I customize it?
  • Change the schedule (different time zone, only Mondays, twice a day, etc.).
  • Send the digest to a different Slack channel, several channels, or as a direct message.
  • Adjust the breakdown (add lifecycle stage, drop country, group acquisition source differently).
  • Lengthen or shorten the comparison window (3 days, 14 days, month over month).

Frequently asked questions

Will this work without a PostgreSQL database?
This template assumes a Postgres signups or users table. If your signups live in a different database, a CRM, or a warehouse, tell Geni what you use and it will swap the source.
Can the digest go to more than one Slack channel?
Yes. Tell Geni which channels you want it posted to and the same digest will be sent to each one.
What if I just want raw numbers and not the AI narrative?
Ask Geni to drop the narrative step. You'll get a clean count breakdown without the qualitative summary.
How do I change the time or days it runs?
Tell Geni the schedule you want, for example '8am London time, Monday to Friday', and the trigger will be updated to match.
Does this need access to my whole database?
No. The workflow only runs the signup count query against the table you specify. You can scope your database user to a single table or read-only schema.

Stop manually tallying signups every morning.

Connect Postgres and Slack once and Geni will run the digest every weekday at 9am Eastern.