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

# Troubleshooting

> Common Profound Pixel issues, their causes, and fixes

## The events report the wrong amounts

Your code likely sends `amount` in major units (dollars), but Profound reads the value as minor units (cents). GA4-style dataLayers carry major units, so this is common with Google Tag Manager.

Send `amount` as a whole number in the currency's smallest unit: `12999` for \$129.99, not `129.99`. In Google Tag Manager, convert the dataLayer value:

```javascript theme={null}
Math.round(Number({{DLV - value}}) * 100)
```

Replace `{{DLV - value}}` with a [Data Layer Variable](https://support.google.com/tagmanager/answer/7683362) name defined in your Google Tag Manager container. If your currency doesn't use two decimal places, adjust the `* 100` multiplier to match its number of decimals.

## Conversions aren't attributed to ads

This issue can be caused by the pixel snippet running too late.

If you installed the snippet manually, check that it's placed directly inside the `<head>` tag of your HTML page and loads unconditionally.

If you used Google Tag Manager, make sure that:

* the **Consent Settings** in your tag are set to **No additional consent required**, as per [step 2 of the install guide](/pixel/install#step-2)
* the trigger is set to **Initialization - All Pages**

Learn more in [step 2 of the pixel installation guide](/pixel/install#step-2).

## Page views are missing on a single-page app

The pixel doesn't watch for route changes, so it records one page view per full page load.

Call `pfq('track', 'page_viewed')` on each route change you want recorded. In Google Tag Manager, use a [History Change trigger](https://support.google.com/tagmanager/answer/7679322).

## Page views are counted twice

If you installed the snippet manually, check that the snippet is placed only once per page.

If you used Google Tag Manager, check that **Advanced Settings** > **Tag firing options** is set to **Once per page**, as per [step 2 of the install guide](/pixel/install#step-2).

## Events return a `202` but don't appear in reporting

The events are likely rejected silently: with origin enforcement on, an unknown pixel ID or an origin missing from the allowlist returns the same `202` as an accepted event.

Check that the snippet has the correct pixel ID, and give your Profound team every origin you send events from: the root domain, the `www` variant, and any checkout or landing subdomains.

## The pixel records no events at all

This can happen when the pixel is waiting for a consent signal that never comes.

If your website doesn't use a consent management platform (common for US-only sites), set the consent posture to opt-out as instructed in [step 3 of the installation guide](/pixel/install#step-3) and redeploy the snippet.

## An event is rejected with a `400` error

Some possible reasons for this are:

* Profound detected personal data in the [`identify`](/pixel/events#tie-events-to-your-own-user-ids) fields. Check that they carry only internal identifiers.
* The event has more than 128 properties.
* The request body of the event exceeds 64 KiB.

Learn more about the event data limitations in the [Events reference](/pixel/events).

## Properties or IDs are missing from recorded events

This can be one of the following:

* The property key or value looks like personal data, so it was dropped in the browser or on Profound's servers.
* If an [`identify`](/pixel/events#tie-events-to-your-own-user-ids) field is missing, check if the property key is correctly typed.

Learn more in the [Events reference](/pixel/events).

## Attribution stops after about 7 days in Safari

Safari's Intelligent Tracking Prevention limits script-written cookies to roughly 7 days. This is browser behavior that can't be changed. Using a different browser will fix the issue.

## The opt-out consent posture behaves as opt-in for some visitors

The pixel checks each browser's timezone and treats every visitor with a European timezone as opt-in: it records nothing until they give consent.

If your pixel is scoped to a single non-EU region, or your local data protection regulations otherwise allow the opt-out posture, you can disable the check by adding `detectRegion: false` to the `pfq('init', ...)` call in your install snippet:

```javascript theme={null}
pfq("init", "<YOUR_PIXEL_ID>", { detectRegion: false });
```

Learn more in [Consent and privacy](/pixel/consent-and-privacy#sites-without-cmp).
