# Troubleshooting: no data or nothing sent

> Why the tag isn't recording, a tracking domain is stuck, or events aren't reaching an ad platform, and how to fix each case.

Updated 2026-11-10 · Troubleshooting · https://kalmananalytics.com/support/troubleshooting-no-data/

Start with the symptom you're seeing.

## Verify installation never finishes

You pressed **Verify installation** and it stays on **Waiting for the first page view…**.

1. **Is the snippet on the page?** Open a page of your site and view its source. Look for the snippet from **Integrations → Tracking**. If you use a site builder, check that the change was published.
2. **Is your domain allowed?** Check **Allowed origins** in **Privacy settings**. The tag refuses hits from any domain that isn't listed. A common miss is listing only `*.northwindhealth.com`, which covers `www.` but not `northwindhealth.com` itself. List both. In your browser's developer tools, a refused hit usually shows only as a CORS error.
3. **Is the workspace live?** The tag's hits are refused until the workspace has an active plan. That includes a preview workspace, one whose subscription has lapsed or failed payment, and a deleted one. Check **Billing**.
4. **Are you a bot to Kalman?** Hits from crawlers, headless browsers and page-preview tools are ignored. Test in a normal browser window.

## A Content Security Policy blocks the tag

If **Verify installation** never finishes and your site sends a `Content-Security-Policy` header, open your browser's console on your site. A message like "Refused to load the script" or "Refused to connect" names the blocked host. Add your tracking subdomain to `script-src`, `connect-src` and `img-src`, and allow the inline snippet with a nonce or hash. See [Install the tag](/support/install-the-tag/) for the exact entries.

## Events are missing from the Event log

- Open **Event log** with the last-10-minutes filter (the link under **Check it worked** on the install page), then do the step again.
- An event name the browser isn't allowed to send (`provider_approved`, `refund_issued`, `refill_purchased` and the like) is refused. Those come from your platform.
- A custom name must start with a letter and use only letters, numbers and underscores, up to 40 characters. A name that refers to a condition or medication is refused.
- `identify` sends nothing if the email has no `@` or the phone has too few digits, and it only works on `https` pages.
- A field in the wrong format (such as a SKU with spaces) is dropped, but the event itself still arrives.

See [Track events](/support/tracking-events/) for the exact formats.

## The tracking domain is stuck

- **Waiting for the CNAME record:** check the record's name and target on **Integrations → Tracking**. If your DNS is on Cloudflare, set the record to **DNS only** (grey cloud). Press **Check now** after a few minutes.
- **We're activating your domain:** DNS is verified and HTTPS is being turned on. This usually takes a few minutes, and Kalman re-checks every 10 minutes. A workspace without a plan waits here until it has one.
- **Activation failed:** remove the domain, check the record, and add it again. If it fails again, [contact support](/support/getting-help/).

The tag keeps working from Kalman's own address in the meantime. See [Tracking domains](/support/tracking-domains/).

## Events arrive but don't reach an ad platform

1. Open **Event log** and switch to **Deliveries to Meta**.
2. Check the **Status** column: `sent`, `pending`, `skipped`, `failed` or `shadowed`.
3. For a skipped one, click **What we sent** to see the reason. The Meta page's **4. Preview** panel also shows "Not sent:" and a reason for your latest event of each type.

| Reason                                    | What it means                                                                                             | What to do                                                                                                                   |
| ----------------------------------------- | --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `not_mapped`                              | The event isn't mapped to a Meta event.                                                                   | Map it on the Meta page, if you want it sent.                                                                                |
| `outside_event_time_window`               | Older than Meta's 7-day window.                                                                           | Nothing. Newer events send normally.                                                                                         |
| `workspace_...`                           | The workspace isn't live (preview, inactive, deleted, no BAA).                                            | Choose a plan or check **Billing**.                                                                                          |
| `consent_denied`                          | The visitor said no to ad sharing, or their browser sends Global Privacy Control.                         | Expected. Kalman respects it.                                                                                                |
| `consent_missing`                         | Your consent mode is opt-in and the visitor hasn't said yes.                                              | Expected under opt-in. See [Consent and GPC](/support/consent-and-gpc/).                                                        |
| `clinical_unacknowledged`                 | A provider-decision event is mapped without the acknowledgement.                                          | Review that mapping on the Meta page.                                                                                        |
| `missing_required_website_field`          | A website event without the visitor's user agent or the site URL, which Meta requires. Held, not sent.    | Turn on **Send visitor user agent** and turn off **Leave the site URL out** on the Meta page, if your privacy review allows. |
| `rejected_by_firewall` / `canary_blocked` | Kalman's privacy checks stopped the payload, for example a custom event name containing a sensitive term. | Rename the event.                                                                                                            |
| `test_code_missing`                       | The destination is in test mode without a test event code.                                                | Add the code, or go live.                                                                                                    |
| `shadow_backlog`                          | Still waiting when the destination switched from shadow to live. It's never sent.                         | Nothing. New events send.                                                                                                    |

**Pending** deliveries are waiting, not lost:

- **Waiting for the BAA:** nothing is sent until your account signs its Business Associate Agreement. See [Sign your BAA](/support/sign-your-baa/).
- **Paused:** someone pressed **Pause sending** on the Meta page. Resume there.

Anything still pending once Meta's 7-day window has passed is skipped.

**Shadowed** means the destination is in shadow mode. Kalman records what it would have sent but doesn't send it. See [Shadow mode and going live](/support/shadow-mode-and-going-live/).

## Many events skipped for consent

- If you use opt-in, every visitor who hasn't said yes is skipped. Check **Consent mode** under **4. Ad consent** on **Privacy review**.
- Check that **Consent manager (CMP) the tag reads** matches the banner your site actually uses.
- Some browsers and privacy extensions send Global Privacy Control, which counts as a no.

## Campaigns show as unknown

Add the URL parameters to your Meta ads. See [Click IDs and intake links](/support/click-ids-and-intake-links/).

## What Kalman never sends

Whatever the delivery status, Kalman never sends names, conditions, medications, intake answers or free text to an ad platform. Skipped and held events stay in Kalman.

Still stuck? Log in and open a request: https://app.kalmananalytics.com/support
