# URL Parameters

Append UTM and custom tracking parameters to your ad links, set once on a template or per ad row.

Canonical: https://adsap.ai/docs/guides/launch/url-parameters
Updated: 2026-09-13

URL parameters are the key-value pairs appended to your destination URL that tell your analytics where traffic came from. Without them, paid social traffic tends to land in your analytics as direct or referral, and you cannot tell which ad earned a sale.

In Adsap, URL parameters are a **field**, not a separate object to manage. No URL parameter template exists.

## Where to set them

Three places, strongest last:

1. **[Account defaults](/guides/account-defaults/launch-settings)**, under tracking, as the default UTM parameters for new work on that ad account.
2. **[An ad template](/guides/templates/ad-templates)**, in its **URL Parameters** field, which travels with the template whenever you apply it to rows.
3. **Per ad row** in the sheet, in the row's own URL Parameters column.

Set them on the account default or a template. Typing them per row is how they end up inconsistent, and inconsistent UTMs are worse than none, because your reporting silently splits one campaign across more than one label.

You can also edit them after launch, on the **Destination** tab of the **Edit ad** panel on the [performance dashboard](/guides/insights/performance-dashboard).

## What to put in them

The standard set:

| Parameter | Purpose | Example |
|---|---|---|
| `utm_source` | Where the traffic came from | `facebook` |
| `utm_medium` | The kind of traffic | `paid_social` |
| `utm_campaign` | Which campaign | `summer_sale_2026` |
| `utm_content` | Which ad | `video_a` |
| `utm_term` | Which audience | `lookalike_1pct` |

Written as a query string, without a leading question mark:

```text
utm_source=facebook&utm_medium=paid_social&utm_campaign=summer_sale_2026
```

Any custom parameters your stack needs work the same way.

## Letting Meta fill in the values

Meta has its own dynamic parameters, which it substitutes when it serves the ad. Pass them through in this field:

```text
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}
```

Meta replaces `{{campaign.name}}`, `{{adset.name}}` and `{{ad.name}}` with the real names at delivery time.

Use this. That is why a sane [naming convention](/guides/launch/naming-conventions) pays off twice: the names you chose become your analytics labels. A campaign name that reads well in Adsap also reads well in Google Analytics.

These are Meta's tokens, and Meta resolves them. They have nothing to do with Adsap's naming tags, and they only work inside this field.

## Consistency matters more than completeness

`utm_medium=paid_social` on some ads and `utm_medium=paid-social` on others gives you two rows in every report forever. Pick a convention, put it in the account default, and leave it alone.

Lowercase everything. Analytics tools treat `Facebook` and `facebook` as different sources.
