# A webmention receiver written in Clojure

**URL:** https://clojureverse.org/t/a-webmention-receiver-written-in-clojure/15008
**Category:** Showcase
**Tags:** beginner, clojure
**Created:** [October 1, 2026, 10:09pm UTC](https://clojureverse.org/t/a-webmention-receiver-written-in-clojure/15008 "2026-10-01T22:09:59Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![Eltrac](https://clojureverse.org/user_avatar/clojureverse.org/eltrac/32/6249_2.png) [@Eltrac](https://clojureverse.org/u/Eltrac)
#### Post date: [October 1, 2026, 10:09pm UTC](https://clojureverse.org/t/a-webmention-receiver-written-in-clojure/15008/1 "2026-10-01T22:09:59Z")

</div>

> **[weepinbell](https://codeberg.org/eltrac/weepinbell)**
>
> A Webmention receiver written in Clojure

Hi, I’m new to ClojureVerse. Hope it 's OK to just drop in with a showcase :3

Basically, it’s webmention receiver. Weepinbell receives webmentions, verifies them, parses their [microformats](https://microformats.org/), and store them (can also sends webhook requests and update an RSS feed when a new mention is received).

> **If you don't know what webmention is...**
>
> It’s a [W3C standard](https://www.w3.org/TR/webmention/) that allows websites to mention each other. For instance, when Alice wrote a blog post in reply to (or merely mentioned) one of Bob’s posts, Alice can send a POST request to Bob’s webmention receiver with params `source` and `target`, notifying Bob that his post is mentioned.
> 
> Alice should look for the endpoint by checking Bob’s `<head>`. Lookup is usually done automatically with a webmention sender.
> 
> ```xml
> <link rel=webmention href=https://webmention.receiver.com/endpoint>
> 
> ```

I’m new to Clojure and this is my first serious Clojure project. So I’m still figuring things out. I’m currently working on the v1.0.0 release.

Also, I think it’s interesting to mention that I made a Clojure wrapper of a WebAssembly program written in Go, using [Chicory](https://github.com/dylibso/chicory).

> **[mf2clj](https://codeberg.org/eltrac/mf2clj)**
>
> A Clojure library that parses microformats, which wraps Will Noriss' go parser.

The reason I did this is that there is no stable microformats parser written in Clojure nor Java. I’ve seen an abandoned parser in Clojure and understood that it’s a niche standard. With very few users, it doesn’t really make sense to maintain a native Clojure library.

WebAssembly seems like a good answer. Just bundle `.wasm` inside a `.jar` and use Chicory to run program written in any language. Clojure can “interop” with more than just Java.
