Collects as they arrive, acts daily
Get a recap a day after each issue
24 hours after a post goes out, you get its open rate, click rate and the links readers clicked most.
- Runs
- Collects as they arrive, acts daily
- Apps
- beehiiv
- AI
- Not needed
- Access
- API key
Send this to your assistant
Create a ClickRuntime automation: 24 hours after each beehiiv post is sent, email me its open rate, click rate and top 5 links.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A publisher sends an issue on Tuesday morning, and the first twenty-four hours decide most of its results. Many writers check the dashboard obsessively on the day and then never again, or forget it altogether when the next issue is due. Without a consistent look at open and click rates a day after sending, patterns such as which subject lines work remain impressions rather than knowledge, and sponsors asking for numbers have to wait.
When an issue is sent, ClickRuntime stores the post's ID. The next day it fetches that post's statistics from beehiiv and emails you the open and click rates. Each issue gets a recap at the same point after sending, so the numbers can be compared fairly from week to week.
Newsletter operators with sponsors or a revenue target will find it helpful for keeping a record.
What you get out of it
Every issue is measured at the same point
Checking at twenty-four hours for every issue makes the numbers comparable. You can trust that a better rate reflects a better issue and not simply a later look. Better rates then reflect better issues and not simply a different moment of looking.
Subject lines can be learned from
With a recap for each issue in your inbox, you can look back and see which subject lines performed best. Writing improves when feedback is regular instead of occasional. Writing improves when feedback is regular and not occasional.
Sponsors get timely numbers
A sponsor who wants to know how their placement performed can receive figures the next day. Quick, honest reporting is part of why sponsors renew. Honest, quick numbers help sponsors decide to renew their placements.
Drops in engagement are noticed
A sudden fall in open rate might signal a deliverability problem. Finding it a day after sending lets you investigate before the next issue suffers too. You can investigate before the next issue suffers the same problem.
Writers do not have to remember
The recap arrives without any need to log in. Time that would be spent on dashboards goes to writing the next issue. That time goes to writing the next issue instead of refreshing dashboards.
How it works
What happens, step by step
When beehiiv sends one of your posts, ClickRuntime notes which post it was and when it went out.
Once 24 hours have passed, it fetches that post's results from beehiiv.
You get an email titled with the post with its open rate, click rate and the five links readers clicked most.
Before it runs live
- Connect beehiiv
- Paste your automation's link into the other app's webhook settings
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
- Act only on the items that match your own rules, and skip the rest
- 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 beehiiv steps into one automation
Under the hood
The code that runs this automation
import time
from clickruntime import on_event, on_trigger, credentials, http, state, notify
PUB_ID = "pub_00000000-0000-0000-0000-000000000000"
@on_event
def remember(event):
if event.json.get("event_type") == "post.sent":
pending = state.get("pending") or []
pending.append({"id": event.json["data"]["id"], "sent": time.time()})
state.set("pending", pending)
return {"ok": True}
@on_trigger
def recap(event):
pending, keep = state.get("pending") or [], []
for p in pending:
if time.time() - p["sent"] < 86400:
keep.append(p)
continue
post = http.get(f"https://api.beehiiv.com/v2/publications/{PUB_ID}/posts/{p['id']}", params={"expand[]": "stats"},
headers={"Authorization": f"Bearer {credentials.secret('BEEHIIV_API_KEY')}"}).json()["data"]
s = post["stats"]
links = sorted(s.get("clicks", []), key=lambda c: -c["total_clicks"])[:5]
notify.email_me(f"24h recap: {post['title']}", f"Open rate: {s['email']['open_rate']}%\n"
f"Click rate: {s['email']['click_rate']}%\n\nTop links:\n" +
"\n".join(f"{c['total_clicks']:>5} {c['url']}" for c in links))
state.set("pending", keep)
return {"recapped": len(pending) - len(keep)}FAQ
Common questions
Are the rates final after one day?
How does it know when an issue was sent?
Can the recap compare with the last issue?
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 your weekly subscriber gains and losses
Every Monday you see how many readers joined, how many left, and your current total.
See how it worksPost new beehiiv subscribers to Slack
Each new reader appears in Slack with their email and where they signed up from.
See how it worksShare reader survey answers in Slack
When a reader answers one of your surveys, the response is posted for the team to read.
See how it worksKeep exploring
Set up “Get a recap a day after each issue” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
