Hi all,

I’d love to see an extension for Scheduled Forum Digests in Flarum.

Feature Overview:

  • A digest email (daily, weekly, etc.) that includes:
  • New posts and discussions
  • Most popular or most active threads
  • Possibly trending tags or keywords
  • Customizable by user: opt-in/out, frequency, and per-tag subscriptions

This would be a fantastic way to keep members engaged and informed—especially those who don't check the forum daily but still want to stay in the loop. Or even better, reminding users the forum is there and they should check it out. This could be huge in the early days when people just sign up and move on.

Why This Matters:

  • Helps boost user retention and re-engagement
  • Keeps communities active, especially for slower-paced forums
  • Common feature in most modern forum platforms

Previous Mentions:
I've seen a few threads and discussions where this idea came up, and even some signs that someone was working on it—but it looks like everything has been abandoned or stalled.

Am I missing something?
Is there extension that actually handles this well? Looking for automated based on parameters, and not just a newsletter extension.

Would love to collaborate or even contribute to getting this off the ground if anyone’s still working on it.

luceos Does this send a weekly email to everyone letting them know what has been happening on the forum? Sort of like reddit?

    luceos Yes, that is why I am asking the question. The information on that page does not state that the extension does what I am asking. I was wondering if there was additional features not listed.

    Correct me if I am wrong, but that digest extension just holds notifications based on the users preference, and sends them bundled accordingly.

    What I am asking for is a digest feature that circulates telling everyone whats new. Because by default, unless a user has subscribed to threads, they won't be notified of changes. Also, they aren't notified of new hot topics, or new post in general.

    treyb Does this send a weekly email to everyone letting them know what has been happening on the forum?

    The readme states:

    2 frequencies are included by default: daily and weekly.

    So that should suffice.

    As for what information is included, this depends on the subscriptions in use per user. So if you have Follow Tags enabled, it could include those notifications.

    Hope this helps.

    One possible "downside" due to being fully notification-based is that if there is no activity at all during a week, no digest will be sent. There will never be any recap of older stuff.

    @luceos maybe that is where the miscommunication is coming from. The digest works fine for what it is, but what I am looking for is closer to what @clarkwinkelmann is mentioning. The extension I am looking for or wanting to buy, is one that would take this weeks, days, months, w/e, hot topics, trending tags, etc and create a new letter basically. Very similar to what reddit does automatically. Not based just on subscriptions, but in an attempt to get users subscribed to new tags or kept in the loop of events in areas they do not currently subscribe.

    I have come up with a bit of a work around, but I still feel that this would make an amazing extension.

    I am using the Syndication extension to get the 5 top post. https://FLARUMSITE.com/atom/discussions?sort=top. Then I am using the Mailing extension to send a pasted HTML email to my members.

    I used the below php script to generate the html email and just paste it in. I have mine saved as newsletter.php and behind a password protected folder. I like the idea of seeing the visual results before sending the email, especially since the Mailing extension does not have a preview.

    Find and Replace FLARUMSITE to make it easier to adjust to your own.

    
    <?php
    function fetchFeed($url) {
        $ch = curl_init($url);
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_USERAGENT => 'FLARUMSITEBot/1.0',
            CURLOPT_SSL_VERIFYPEER => false,
        ]);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }
    
    $feedData = fetchFeed('https://FLARUMSITE.com/atom/discussions?sort=top');
    if (!$feedData) {
        die('<h2>Error: Could not fetch feed.</h2>');
    }
    
    $xml = simplexml_load_string($feedData);
    if (!$xml) {
        die('<h2>Error: Failed to parse XML.</h2>');
    }
    
    ob_start();
    ?>
    <!-- BEGIN FLARUMSITE Weekly Email Digest -->
    <table cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px; margin: auto; font-family: Arial, sans-serif; color: #333;">
        <tr>
            <td align="center" style="padding: 20px;">
                <img src="https://FLARUMSITE.com/assets/logo-6m4unrdr.png" alt="FLARUMSITE Logo" width="200" style="margin-bottom: 20px;">
                <h2 style="color: #007bff; margin: 0;">📰 FLARUMSITE Weekly Digest</h2>
                <p style="font-size: 16px;">Here's a roundup of hot topics and discussions happening on FLARUMSITE.com this week:</p>
            </td>
        </tr>
    
        <?php
        $count = 0;
        foreach ($xml->entry as $entry):
            if (++$count > 5) break;
            $title = htmlspecialchars((string)$entry->title);
            $link = (string)$entry->link['href'];
            $summary = strip_tags((string)$entry->summary);
            $summaryShort = strlen($summary) > 200 ? substr($summary, 0, 200) . '…' : $summary;
        ?>
        <tr>
            <td style="padding: 10px 20px;">
                <h3 style="margin-bottom: 5px;"><a href="<?= $link ?>" style="color: #007bff; text-decoration: none;"><?= $title ?></a></h3>
                <p style="margin-top: 0; font-size: 14px; line-height: 1.5;"><?= $summaryShort ?></p>
            </td>
        </tr>
        <?php endforeach; ?>
    
        <tr>
            <td align="center" style="padding: 20px; font-size: 14px; color: #777;">
                <hr style="border: none; border-top: 1px solid #ddd; margin: 20px 0;">
                <p>Want more? Visit <a href="https://FLARUMSITE.com" style="color: #007bff;">FLARUMSITE.com</a> to join the conversation.</p>
            </td>
        </tr>
    </table>
    <!-- END FLARUMSITE Weekly Email Digest -->
    <?php
    $htmlOutput = ob_get_clean();
    echo $htmlOutput;
    ?>
    
    <!-- Show a copy-paste box -->
    <div style="max-width: 600px; margin: 40px auto;">
        <h3>📋 Copy & Paste Email HTML</h3>
        <textarea style="width: 100%; height: 300px; font-family: monospace; font-size: 14px; padding: 10px; border: 1px solid #ccc;">
    <?= htmlspecialchars($htmlOutput); ?>
        </textarea>
    </div>

    Here is the final look of the page: