Free · one line of markup

Put the deadline on your own site.

If you run an advisory site, an internal intranet or a client portal, you can render the live obligation data here inside your own pages. It stays current because it reads the same file the tracker reads — you never have to maintain a deadline table again. No build step, no framework, no cookies set on your visitors.

Step one · pick a widget

Three shapes, one script.

Each preview below is the live widget, running on this page exactly as it would run on yours. Copy the snippet underneath it.

Deadline countdown

The next dated obligation across the regime, counting down live. Turns amber inside thirty days. Pauses itself when scrolled out of view, so it costs your page nothing.

<div data-ss-embed="countdown"
     data-regime="Pillar Two"
     data-fye="12-31"></div>
<script src="https://saurabhsatija.com/embed.js" async></script>

Jurisdiction card

One jurisdiction, one regime: what it is, the access gate that has to be cleared first, and the separate filings it triggers. Set data-code to any two-letter code in the tracker and data-regime to either regime.

<div data-ss-embed="jurisdiction"
     data-code="FR"
     data-regime="E-invoicing"></div>
<script src="https://saurabhsatija.com/embed.js" async></script>

Obligation counter

The headline numbers, for a landing page or a pitch deck screenshot. Use data-regime="all" for both regimes together, or name one.

<div data-ss-embed="counter" data-regime="all"></div>
<script src="https://saurabhsatija.com/embed.js" async></script>
Step two · options

Every attribute, and what it does.

Five attributes, all optional except the first. Anything you leave out takes the default.

AttributeValuesDefaultApplies to
data-ss-embedcountdown · jurisdiction · countercountdownrequired
data-regimePillar Two · E-invoicing · allPillar Twoall three
data-codeany two-letter code in the trackerDEjurisdiction
data-fye12-31 · 03-31 · 06-30 · 09-3012-31countdown
data-themeauto · light · darkautoall three

How it behaves on your page. Everything renders inside a shadow root, so your CSS cannot break the widget and the widget cannot leak a single style into your page. It sets no cookies, writes nothing to storage and does not track your visitors — one cached GET for the data file and nothing else. If my site is ever unreachable, the widget degrades to a single line of text rather than an error. Rendering widgets after page load? Call window.SSEmbed.scan().

Step three · terms

Free, including commercially — on one condition.

Worth reading in full. It is four short paragraphs and it is the whole licence.

You may embed these widgets on any site, including a commercial advisory site, a client portal or an internal intranet, for any number of pages, with no fee and no registration.

The one condition is that the attribution line the widget renders stays visible and the link stays followable. It is not decoration — it is the licence. Suppressing it with CSS, removing it from the DOM or making it nofollow ends your permission to use the widget.

What the data is and is not. Every row is checked against the tax authority's own published page and dated. It is a scoping aid, not advice, and not my employer's view. Nothing in the widget is a representation that your group's position is as the widget describes — verify against the authority before you file. I accept no liability for reliance on it, and by embedding it you accept that the same applies to your own readers.

What I would ask, but do not require. If a row looks wrong to you, tell me. Corrections from practitioners are the reason this stays accurate, and I credit them in the change log if you want the credit.

Want a widget this page does not have?

A filtered countdown for one client's footprint, a card for a jurisdiction not yet covered, the data as a feed into your own system — say what you need. The underlying file is open at /tracker-data.json if you would rather build it yourself.