API DocsUse CasesEngagement Spike Monitor
Never miss a spikeWebhooks + Activity

Engagement Spike Monitor

Track activity trends in your target communities. Post into momentum.

Who this is for

Growth operatorsContent marketersCommunity managersReal-time automation builders

The problem

Subreddit activity is far from uniform. Communities spike 2–5× in activity around news events, product launches, seasonal trends, or viral posts — and then drop back to baseline. A post published during a spike rides a wave of increased eyeballs; the same post published 6 hours later competes against a wall of new content at normal traffic levels.

The challenge is that these spikes are unpredictable. You can't know in advance when r/SaaS will spike 3× because a major SaaS company just had a public incident, or when r/gamedev will spike because a major game just launched. The only way to react in time is automation.

Most marketers either ignore timing entirely (posting whenever it's convenient) or follow a fixed schedule based on general best-practices guides. Both approaches miss the actual live activity patterns of specific communities. Real-time data from the communities you care about is the only reliable signal.

How Reoogle solves it

The activity.changed webhook fires when Reoogle detects that a tracked subreddit's engagement level has shifted by more than 20% from its rolling average. The payload includes the exact delta percentage, current engagement score, and subreddit metadata — enough to decide in milliseconds whether to act. Wire this to an automated posting trigger and you can publish into a community during its peak activity window, consistently, without anyone watching a dashboard.

How it works

1

Identify the communities worth monitoring

Run GET /subreddits with your target categories and save the top 10–20 communities you want to track for engagement spikes. These should be communities where you already have good content ready to post — the spike trigger is only useful if you can act on it within minutes.

2

Register the activity.changed webhook

POST /webhooks with events: ["activity.changed"]. When the webhook fires, the payload includes subreddit, delta_pct, current_engagement, and baseline_engagement. Store your signing secret immediately — it's not recoverable.

3

Filter: only act on significant positive spikes

In your webhook handler, check delta_pct > 30 (a 30% increase from baseline) and ensure the subreddit is in your monitored list before scheduling anything. Negative deltas (drops) are useful for pausing posts, not for scheduling new ones. Avoid acting on tiny fluctuations — set a meaningful threshold.

4

Verify the spike is live, not a historical artifact

Call GET /subreddits/{name}/activity to get the hour-of-day engagement breakdown. Find the current UTC hour's score. If it's significantly higher than that hour's historical average, the spike is real and happening right now. If it's at or below average, the webhook fired on a stale data update — ignore it.

5

Schedule a post 10–20 minutes out

Use POST /schedule with scheduled_for set 10–20 minutes from now. This narrow window keeps you inside the spike while giving the scheduler time to prepare. Have a pre-written "spike post" template ready for each monitored community — during a live spike is not the time to write content from scratch.

6

Implement rate-limiting to avoid spam

Store the last time you posted to each subreddit in a database. In your webhook handler, check that at least 24 hours have passed since the last post before scheduling a new one. A spike that lasts 4 hours shouldn't trigger 4 posts to the same community.

Code examples

Handle the activity.changed event

javascript
app.post(0, express.raw({ type: 1 }), async (req, res) => {
  2

  const { event, data } = JSON.parse(req.body.toString());

  if (event === 3 && data.delta_pct > 30) {
    console.log(4);

    5
    const actRes  = await fetch(6, { headers: HEADERS });
    const actData = (await actRes.json()).activity;
    const now     = new Date().getUTCHours();
    const thisHour = actData.find((r: any) => r.utc_hour === now);

    if (thisHour && thisHour.engagement > 20) {
      await scheduleImmediatePost(data.subreddit);
    }
  }

  res.sendStatus(200);
});

Schedule an immediate post into the spike

typescript
async function scheduleImmediatePost(subreddit: string) {
  const in15min = new Date(Date.now() + 15 * 60_000).toISOString();

  await fetch(0, {
    method:  1,
    headers: { ...HEADERS, 2: 3 },
    body: JSON.stringify({
      title:         SPIKE_POST_TITLE,
      body:          SPIKE_POST_BODY,
      subreddit,
      scheduled_for: in15min,
    }),
  });
  console.log(4);
}

Common pitfalls

Not rate-limiting posts triggered by spikes

A 4-hour spike can theoretically trigger multiple webhook events. Without a per-subreddit cooldown, you'll schedule multiple posts to the same community within hours — a guaranteed ban trigger. Always check last_post_time before scheduling.

Reacting to spikes without pre-written content

If you have to write the post after the webhook fires, you'll miss the spike window. Have a ready-to-deploy template for each monitored community stored in your database — just swap in dynamic values at fire time.

Ignoring the community context of the spike

Some spikes are caused by drama or controversy in the community — not increased receptivity to new posts. A spike triggered by a major outage discussion is not a good time to post your product. Check recent top posts before scheduling if time permits.

Key benchmarks

2–4×

Engagement lift during spike

Typical score multiplier for posts published during a detected engagement spike vs the same community's off-peak baseline.

3–8 h

Median spike duration

How long a typical engagement spike lasts before the community returns to baseline activity.

3–6

Spikes detected per community/month

Average number of significant (>30%) engagement spikes per monitored subreddit per month.

Recommended stack

Reoogle APIactivity.changed webhook + activity data + scheduling
Upstash RedisPer-subreddit last-post timestamp for rate-limiting
Vercel Edge FunctionsLow-latency webhook handler for sub-second spike response
Notion / AirtablePre-written content templates per monitored community

Frequently asked questions

What triggers the activity.changed event exactly?

The event fires when a subreddit's rolling 24-hour engagement score deviates more than 20% from its 30-day average. The delta_pct field tells you the exact percentage change, and whether it's positive (spike) or negative (drop).

How quickly should my webhook handler respond?

Return HTTP 200 within 10 seconds. Heavy processing (fetching activity data, database lookups, scheduling) should happen asynchronously after responding — use a background job or queue. If your handler takes longer than 10 seconds, Reoogle will retry the delivery, potentially causing duplicate processing.

Can I monitor communities that aren't in my posting rotation?

Yes — you can subscribe to activity.changed for any subreddit you want to monitor, regardless of whether you post there. This is useful for competitive intelligence: track when competitor-heavy communities spike to understand market events before they reach mainstream coverage.

What should my spike post template look like?

Value-first content that fits the community's primary topics. Avoid referencing the spike (don't say "I noticed this community has been active about X lately" — that reads as surveillance). The best spike posts are evergreen pieces that are equally relevant during high and normal activity, but benefit from the extra visibility during spikes.

Business value

Posts published during engagement spikes receive 2–4× more views and upvotes than the same content posted at a random time. Catching even 3–4 spikes per month compounds into significantly higher organic reach over a quarter.

Ready to build this?

Generate an API key from your developer dashboard and make your first request in minutes.