Paste the block into a site
nods.to writes one block of HTML for each installation, counts the clicks on it and serves its card.
Record what the client agreed to.
You make an installation for each site and say which tier its owner agreed to. The tier decides what the block holds. The figures are measured from the block nods.to writes for the site in these docs.
| Agreed | Added to the site | The credit, gzipped | Inline script |
|---|---|---|---|
| No credit | Nothing. | None | None |
| In the code only | One JSON-LD script element in the page source. | None | None |
| Text and link | The credit: one element and one style block. The JSON-LD record is optional. | 1093 bytes | None |
| Full | The credit, and an inline script of under 600 bytes that loads the panel on demand. | 1374 bytes | 570 bytes |
Paste the block where the footer is.
The block is a style element and the credit, drawn by the same package as a build would use. The credit carries data-nods-instance, which names the installation and is the same for every visitor.
The credit, after its style block
<span
class="nods"
data-nods="kiln"
data-nods-instance="kf7w2mxp"
aria-describedby="nods-summary">
<span class="nods-label">Designed and built by </span>
<a
class="nods-name"
href="https://nods.to/kiln/marigold"
rel="author nofollow noopener"
target="_blank">Marigold</a>
<span class="nods-sep"> and </span>
<a
class="nods-name"
href="https://nods.to/kiln/pocket-monday"
rel="author nofollow noopener"
target="_blank">Pocket Monday</a>
<a
class="nods-page"
href="https://nods.to/kiln"
target="_blank"
rel="noopener">Credits</a>
<span
class="nods-sr"
id="nods-summary">Kiln, 2026. Design: Marigold. Build: Pocket Monday. Made with Five colours.</span>
</span>Count a click through nods.to.
In a pasted block each name points at nods.to/project/name, which answers with a 302 to that maker’s own site. Change the destination in the app and every footer follows. The record page, once you publish it, is at nods.to/kiln.
- Marigold
nods.to/kiln/marigold- Pocket Monday
nods.to/kiln/pocket-monday
A counted click stores the seven things below. It keeps no IP address and no user agent, and it sets no cookie.
- The time
- The project
- The credited name
- The host of the site the click came from
- The installation, where that host matches one
- A two-letter country
- A device class
Load the card when a visitor reaches for it.
The Full tier adds an inline script that attaches three listeners and makes no request. The first pointer or focus to reach the credit imports the card, and a click before it arrives waits for it. If the import fails, the click goes where the link went.
- The card
nods.to/e/kf7w2mxp.js, with this installation’s markup and stylesheet.- The panel script
nods.to/e/panel.6d4be2c44018.js, the same for every site and cached for a year.- Each opening
- One empty POST to
nods.to/e/kf7w2mxp/open, with credentials omitted.
Change a credit after it is pasted.
The card is fetched, so a new card, new colours or a republished record reach every site within five minutes. The line is static markup, so a new line style arrives when the block is next pasted.
Allow three entries in a strict content security policy.
- style-src
- The inline style block, by hash.
- script-src
- The inline script, by hash, and https://nods.to.
- connect-src
- https://nods.to.
Where inline script is refused, the control stays an ordinary link to the record page. For developers states all of this for the person who maintains the site.
Expect one request a week from nods.
On a plan with the weekly check, nods fetches the page once a week with a single GET, from the user agent nods-check/1, and looks for data-nods-instance to confirm the credit is still there.
Pricing lists what each plan includes. Next, style your page with CSS.
Questions
What does a counted click store?
The time, the project, the credited name, the host of the site the click came from, the installation, where that host matches one, a two-letter country and a device class. It keeps no IP address and no user agent, and it sets no cookie.
What happens where inline script is refused?
The control stays an ordinary link to the record page.
How soon does a change reach a site that already carries the block?
A new card, new colours or a republished record reach every site within five minutes. A new line style arrives when the block is next pasted.