Skip to content

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.

Paste it into your assistant. It tells you what it will send or change before it runs live.

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

  1. When beehiiv sends one of your posts, ClickRuntime notes which post it was and when it went out.

  2. Once 24 hours have passed, it fetches that post's results from beehiiv.

  3. 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

RunsCollects as they arrive, acts daily
Get a recap a day after each issuetoday, 9:00Succeeded
Email · 24h recap: The October issueOpen rate: 52.3% · Click rate: 6.1% Top link: 412 https://northwind.example/launch

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
post_sent_performance_recap.pyexample
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?
Most opens and clicks happen in the first day, so the figures are a good guide, though readers can open an issue days later. If you want a fuller picture, ask your AI assistant to send a second recap a week after sending.
How does it know when an issue was sent?
beehiiv sends an event when a post is published or sent, and ClickRuntime stores the post ID then. The next day it uses that stored ID to fetch statistics, which means each issue is recapped once and none are skipped.
Can the recap compare with the last issue?
Yes. Because ClickRuntime keeps the earlier numbers, the email can show the open and click rates alongside the previous issue and the difference. This is a common request, since a single rate means little without a baseline.
What permissions does it need?
API key. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

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.