nopCommerce has a field made for this, so there is no theme file to edit and nothing to reapply after an upgrade. It is the same one script tag as installing the snippet.

Get the snippet from your dashboard first. It looks like this, with your own site ID in the path:

<script src="https://t.skomi.com/s/your-site-id.js" defer></script>

Paste it into Custom HTML

In the administration area, go to Configuration → Settings → General settings and find the Custom HTML section. Paste the tag into Footer custom HTML and save.

That is the whole installation. The tag is added to every page of the store, and it carries defer, so it does not hold up rendering.

The header field is the wrong one here for the same reason the snippet documentation says to paste before the closing </body>: nothing on the page needs to wait for it.

If you run more than one store

The settings page has a store scope selector at the top, and Custom HTML is one of the settings it governs. Each store is a different domain, so each one is a separate site in Skomi with its own ID:

  1. Choose the store from the scope selector.
  2. Tick the override box beside Footer custom HTML.
  3. Paste that store's own tag and save.

Set the scope before you paste. Pasting one store's tag while the scope is "All stores" reports every store as the same site, and the numbers are then a sum nobody asked for.

Caches

nopCommerce applies the setting immediately, but a full-page cache, a reverse proxy or a CDN in front of the store will keep serving pages generated before you saved. Purge it, then load a page.

For a plugin or theme instead

If the tag needs to belong to a plugin rather than to a settings field, a widget can inject it into the head or footer widget zone the same way any other third-party script is added. The Custom HTML field is the simpler answer for a single store and the one to prefer.

Check it is working

Load a page of the store and then look at your dashboard. If nothing arrives, see what to check when the snippet is not working. On a store the usual answer is a cache in front of nopCommerce, or a tag saved against the wrong store scope.