skip to content

Debugging webmention.io setup

Growing

/ 2 min read

Updated:

I set up webmention.io for this site today and hit two useful failure modes.

The site was already advertising the right IndieWeb links:

<link href="https://github.com/shdennlin" rel="me">
<link href="https://webmention.io/blog.shdennlin.com/webmention" rel="webmention">
<link href="https://webmention.io/blog.shdennlin.com/xmlrpc" rel="pingback">

But my first manual Webmention test failed:

{
"error": "invalid_target",
"error_description": "target domain not found on this account"
}

The problem was not Cloudflare, the HTML, or the source URL. The webmention.io account did not yet have blog.shdennlin.com added as a site. After adding the site in webmention.io, the same POST succeeded:

HTTP/2 201 Created
{
"status": "queued",
"summary": "Webmention was queued for processing"
}

Then the queued Webmention failed validation:

{
"status": "invalid_content",
"summary": "The server did not return a recognized content type"
}

That was caused by using a GitHub Gist raw URL as the source. The raw file contained valid HTML, but the response content type was not a recognized HTML content type for webmention.io.

The useful checks:

Terminal window
curl -s https://blog.shdennlin.com \
| grep -E 'rel="webmention|rel="pingback|rel="me"'
Terminal window
curl -i \
--data-urlencode source="https://example.com/source-page" \
--data-urlencode target="https://blog.shdennlin.com/" \
"https://webmention.io/blog.shdennlin.com/webmention"

The lesson: first verify that the target page advertises the endpoint, then verify that webmention.io has the domain added to the account, then test with a real public text/html source page that links to the target.

Edit this page on GitHub

Comments

Local graph

No local links yet · full graph →