> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nemu.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Installing in your Web Application

## Installation

In your web application, it is necessary to install our Web SDK so that the entire flow is tracked and attributed correctly. For this, you need to include the Nemu pixel script in the `<head>` of all your web pages. The Nemu pixel can be created in your dashboard by going to: Integrations -> Pixels -> Click here to add

See how to install [here](/en/onboarding/configuring-pixel)

At the end of creation, the URL of the Nemu pixel script will be displayed. Copy and paste it into the `<head>` of all your site pages.

With this, the global variable `trackingNemu` will be available with utility methods for tracking.

## Registering UID to the user session

<Info>
  For total security and integrity of your application user data,
  all UIDs registered by our SDK are encrypted before being
  stored on our servers.
</Info>

During the application login process, add a call to the `setUserId()` method, passing the defined UID of the user who just completed the login process as an argument. Example:

```js theme={null}
function authenticateUser() {
  const email = "user@example.com";
  const password = "1234";

  loginUser({
    email: email,
    password: password,
    onSuccess: function (userId) {
      trackingNemu.setUserId(userId);
      console.log(`NemuTracking: Registered user: ${userId}`);
    },
    onError: function () {
      console.error("NemuTracking: Failed to authenticate user");
    },
  });
}
```

It is mandatory to ensure that users who were already logged in before the SDK installation or update are also correctly tracked.

To do this, you can define the UID as soon as it is available in the application, normally right after loading the locally saved user.

Common options in web applications would be:

**SPA App**: inside the global loading `useEffect`\
**Common Sites**: right after the SDK script loads, if `window.user` is already available

```js theme={null}
const userId = window.sessionUser?.email || window.sessionUser?.id;

if (userId) {
  nemuTracking.setUserId(userId);
}
```

## Retrieving UTMs when sending sale event to Nemu API

The `getLastSessionHistory()` method returns an object containing the UTMs from the user's last session. Use this object when sending the sale information to the Nemu API.

```js theme={null}
function sendSaleWithUtms() {
  const session = trackingNemu.getLastSessionHistory();

  if (!session) {
    console.log("No sessions found");
    return;
  }

  const payload = {
    transactionId: "123",
    netValue: 10,
    status: "paid",
    utm_campaign: session.utmCampaign ?? null,
    utm_content: session.utmContent ?? null,
    utm_medium: session.utmMedium ?? null,
    utm_source: session.utmSource ?? null,
    utm_term: session.utmTerm ?? null,
  };

  const url = "https://developers.nemu.com.br/api/v1";

  fetch(url, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload),
  })
    .then((response) => {
      console.log(`API response: ${response.status}`);
    })
    .catch((error) => {
      console.error(`Error to send: ${error.message}`);
    });
}
```
