# Quickstart


> Create your first CDNPulse application, install the monitoring script, and start reading CDN performance analytics.




CDNPulse measures how your real users load the same static assets from your CDN, origin, or multiple CDN providers. This guide takes you from a new account to your first analytics view.

## Before you start

You need:

- Access to the website where you will install the CDNPulse script.
- One or more public static file URLs to test, such as images, JavaScript, CSS, fonts, or video files.
- Permission to configure response headers for those files in your CDN, storage bucket, web server, or load balancer.

Choose files that represent the content you care about. For CDN comparison, use equivalent files from each provider. For origin vs. CDN comparison, include one origin URL and one CDN URL for the same or similar asset.

## 1. Sign in

Open [app.cdnpulse.io](https://app.cdnpulse.io) and enter your email address.

![CDNPulse sign-in screen](images/signin.png)

CDNPulse uses passwordless authentication. After you request access, check your email for the 6-digit verification code and enter it in the app.

If this is your first time signing in, complete the profile setup screen before creating an application.

## 2. Create an application

From the dashboard, choose **New Application**.

![Create New Application form](images/create-app.png)

Fill in:

- **Application Name**: a stable identifier for this test, using lowercase letters, numbers, and dashes only. Example: `main-website`.
- **Website URL**: the site where the monitoring script will run. Example: `https://example.com`.
- **Files to Monitor**: the asset URLs CDNPulse should load and measure.

Select **Add Another File** for each additional asset, then create the application.

The application name becomes part of your script URL, so treat it as permanent. You can update the website URL and monitored file URLs later, but the application name cannot be changed after creation.

## 3. Configure timing headers

For accurate browser timing data, each monitored file must return a `Timing-Allow-Origin` response header.

For a simple setup, allow all origins:

```http
Timing-Allow-Origin: *
```

Or restrict timing access to your website:

```http
Timing-Allow-Origin: https://example.com
```

Without this header, browsers hide parts of the Resource Timing data, and CDNPulse can only show limited measurements.

Common places to configure this header:

- Cloudflare: response header rules.
- AWS CloudFront: response headers policy.
- Azure CDN: rules engine response headers.
- Google Cloud CDN: custom headers through the load balancer.
- Nginx: `add_header Timing-Allow-Origin *;`

## 4. Install the script

After the application is created, open **Manage** and copy the **Embed Code**.

It looks like this:

```html
<script src="https://api.cdnpulse.io/api/apps/main-website/cdnpulse.js" defer></script>
```

Paste the script into your website's `<head>` section and deploy the change.

The script is designed to run after the page has loaded or the browser is idle. It then downloads the monitored files with a cache-busting query string, reads browser timing entries, and sends the measurements back to CDNPulse.

## 5. Generate data

Open the instrumented website in a browser and refresh it a few times. If possible, ask teammates in different regions or networks to visit the page too.

CDNPulse records measurements from real user browsers, including:

- Total duration.
- DNS lookup time.
- TCP connection time.
- TLS handshake time.
- Request and response timing.
- Transfer size.
- City and country-level location.

Detailed charts become more useful after the app has a larger sample. The dashboard hides advanced charts until there are at least 100 monitored requests, so early data may only show the summary cards.

## 6. Read the analytics

Open **Analytics** for your application.

Use:

- **Time Range** to switch between the last 24 hours, 7 days, 14 days, 30 days, or 90 days.
- **Rate Interval** to group trend data by hour or day.
- **Display Timezone** to view timestamps in UTC or your local timezone.

The main metrics show request volume, transferred data, geographic coverage, and average timing breakdowns. Lower duration, DNS, connection, TLS, request, and response values generally mean faster delivery for users.

## Troubleshooting

### No data appears

Make sure the script is present on the deployed page, the application name in the script URL matches the app in CDNPulse, and real browsers have loaded the page after deployment.

### Timings look incomplete

Check the monitored file responses for `Timing-Allow-Origin`. Browser timing APIs hide cross-origin details unless that header is present.

### Some files are missing from analytics

Confirm each monitored URL is publicly reachable, returns a successful response, and is still listed in **Files to Monitor** for the application.




