Daily
Post yesterday's Braze campaign stats to Slack
Each morning your team sees sends, opens, conversions and revenue for your main campaigns, by channel.
- Runs
- Daily
- Apps
- Braze
- AI
- Not needed
- Access
- campaigns.data_series
Send this to your assistant
Create a ClickRuntime automation: every day at 9am, post yesterday's sends, opens, conversions and revenue for my Braze campaigns 'Welcome Series' and 'Spring Sale' to #growth in Slack, split by channel.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A lifecycle marketer at a company using Braze usually launches several campaigns at once: a welcome series, a cart reminder, a win-back push. Results are in the Braze dashboard, but checking each campaign one by one takes ten minutes, and on busy days it simply does not happen. A campaign with falling opens or a broken conversion link can run for a week before anyone looks.
Each day, ClickRuntime goes through the campaigns you have configured, calls the Braze data series endpoint with length set to one day, and totals the results per channel. It then posts yesterday's sends, opens, conversions and revenue to Slack in one message, so the numbers are in front of the team before the morning stand-up.
Marketing managers and growth teams that live in Slack tend to prefer this to opening another dashboard.
What you get out of it
Underperformance is caught the next morning
If yesterday's open rate halves, the post makes it obvious right away. A fix the next day is far cheaper than a week of weak sends going out to your whole audience.
Revenue attribution stays in view
Seeing conversions and revenue beside sends keeps the team focused on outcomes. Campaigns that look busy but earn nothing get questioned sooner. Campaigns that look busy but earn nothing get questioned while there is still budget and time to change them.
Everyone shares the same numbers
A single post in a channel means product, sales and marketing all see identical results. Debates about whose screenshot is right disappear. No more arguments about which export or screenshot is the latest, because the Slack message is the one record everybody refers to.
Channel mix is easy to compare
Totals per channel show whether email, push or in-app messages did the work. That informs where to spend the next hour of creative effort. A team that learns push outperforms email for one audience can shift its effort the same week instead of next quarter.
The dashboard visit becomes optional
Reading a short message replaces ten minutes of clicking through campaigns. The saved attention goes into improving copy and timing. A short message replaces a click-through of several campaign pages, and busy managers actually read it every single day.
How it works
What happens, step by step
Every morning, ClickRuntime fetches yesterday's numbers from Braze for the campaigns you chose, such as Welcome Series and Spring Sale.
For each campaign it notes the conversions and revenue.
It also breaks down sends and opens by channel, such as email or push.
It posts the summary to #growth in Slack.
Before it runs live
- Connect Braze
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Braze steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, notify, http
BRAZE = "https://rest.iad-01.braze.com"
CAMPAIGNS = {"Welcome Series": "campaign-id-1", "Spring Sale": "campaign-id-2"}
@on_trigger
def run(event):
headers = {"Authorization": f"Bearer {credentials.secret('BRAZE_API_KEY')}"}
lines = []
for name, cid in CAMPAIGNS.items():
day = http.get(f"{BRAZE}/campaigns/data_series", headers=headers,
params={"campaign_id": cid, "length": 1}).json()["data"][0]
lines.append(f"*{name}*: {day.get('conversions', 0)} conversions, ${day.get('revenue', 0):,.2f} revenue")
for channel, variants in day["messages"].items():
sent = sum(v.get("sent", 0) for v in variants)
opens = sum(v.get("unique_opens", v.get("direct_opens", 0)) for v in variants)
lines.append(f" {channel}: {sent} sent, {opens} opens")
notify.slack("Braze yesterday\n" + "\n".join(lines), channel="#growth")
return {"campaigns": len(CAMPAIGNS)}FAQ
Common questions
Which campaigns are included?
Why does it use one day of data?
What access does Braze require?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get alerted when Braze webhook sends fail
You find out when a campaign's webhook sends start erroring, before the problem runs for days.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksPost a morning briefing to Slack
Your team starts the day with the weather, a reminder or anything else you'd like in #general.
See how it worksKeep exploring
Set up “Post yesterday's Braze campaign stats to Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.