Guide
Share buttons for Cloudflare
Inject the buttons at the edge, with no change to your origin at all.
Where they end up: Into the HTML of every response, rewritten as it passes through Cloudflare.
- 01
Create a Snippet
In the dashboard: Rules → Snippets → Create. Snippets run on the edge and can rewrite HTML without your origin server knowing anything about it.
- 02
Rewrite the HTML on its way through
HTMLRewriter streams the response, so this adds no meaningful latency and never buffers the page.
javascriptexport default { async fetch(request) { const response = await fetch(request); // Only rewrite HTML; images and JSON pass straight through. if (!response.headers.get('content-type')?.includes('text/html')) { return response; } return new HTMLRewriter() .on('article', { element(el) { el.append( '<div class="ats_kit ats_kit_size_32">' + '<a class="ats_button_facebook"></a>' + '<a class="ats_button_x"></a>' + '<a class="ats_dd"></a>' + '</div>', { html: true } ); }, }) .on('body', { element(el) { el.append('<script async src="//static.addtosite.com/widget.js"></' + 'script>', { html: true }); }, }) .transform(response); }, }; - 03
Limit it to the pages that need it
Give the Snippet a rule like `http.request.uri.path matches "^/blog/"` so it never touches your checkout, your admin, or your API.
Want a different set of services?
The snippets above use a sensible default. The configurator builds the exact markup for whichever services you want, in whichever order, at whichever size — paste that in place of the kit shown here.