Skip to main content

UTM Tracking for Web Push Notifications

Written by Engineering team
Updated this week

Understanding UTM Tracking

UTM parameters are tags added to the end of URLs that help you track where your website traffic is coming from. When a subscriber clicks on your push notification, these parameters tell Google Analytics (and other analytics tools) that the visit came from PushOwl.

For example, a push notification URL might look like this:

https://yourstore.com/products/summer-tee?utm_source=pushowl&utm_medium=campaign&utm_campaign=Summer+Sale

This way, you can measure exactly how much traffic and revenue your push notifications are driving right inside your analytics dashboard.

PushOwl automatically adds UTM parameters to every push notification you send. There’s nothing you need to turn on. It works out of the box for all merchants.

Where to Find UTM Settings

To view and manage your UTM tracking parameters, navigate to:

Settings → Web Push → UTM Tracking

How the UTM Table Works

Your UTM settings are displayed in a table with two value columns: Campaign value and Flow value, shown side by side. This lets you set different tracking values for campaign notifications versus automated flow notifications (like abandoned cart reminders or browse abandonment).

Each row in the table represents one UTM parameter. PushOwl comes with 5 standard parameters pre-configured:

Parameter

Campaign Value

Flow Value

Enabled by Default

utm_source

pushowl

pushowl

✅ Yes (Locked)

utm_medium

Source type (e.g., campaign)

Source type (e.g., abandoned_cart)

✅ Yes (Locked)

utm_campaign

Campaign name or ID

Flow source name

✅ Yes (Locked)

utm_id

Campaign ID

Flow ID

❌ No

utm_term

(empty)

Reminder sequence number

❌ No

Locked Parameters

You’ll notice that utm_source, utm_medium, and utm_campaign have a lock icon next to them. These three parameters are locked and cannot be edited, toggled off, or deleted from the dashboard.

Why are they locked? These core parameters are essential for Google Analytics attribution. Changing them could break how traffic from push notifications appears in your analytics reports. We lock them by default to protect your existing data.

If you need to change a locked parameter for a specific reason, please contact our support team and we’ll help you out.

What You Can Customize

While the three core parameters are locked, you have full control over the rest:

Enable or Disable Optional Parameters

You can toggle utm_id and utm_term on or off using the checkbox next to each row. When disabled, that parameter won’t be added to your notification URLs.

Add Custom Parameters

Click the + Add UTM parameter button below the table to create your own tracking parameters. Custom parameters let you pass additional data to your analytics tools.

For each custom parameter, you can set:

  • Key: the parameter name (e.g., utm_content, ref, my_tracking_tag)

  • Campaign value: the value used when the notification comes from a campaign

  • Flow value: the value used when the notification comes from an automation flow

You can add up to 10 custom parameters beyond the 5 standard ones.

Edit Parameter Values

Click on any editable value field to change it. You can type a static value (like webpush or promo) or use a dynamic template variable.

Template Variables

Template variables let you insert dynamic values that change based on each notification. Instead of a fixed value, use a variable in the {{variable}} format and PushOwl will automatically fill in the right value when the notification is sent.

Here are the available template variables:

Variable

What It Resolves To

Example Output

{{source}}

Notification source type

campaign, abandoned_cart

{{source_id}}

Numeric source ID

42

{{source_identifier}}

Source ID for campaigns, source name for flows

42 or abandoned_cart

{{campaign_id}}

Campaign ID (empty for flows)

42

{{campaign_name}}

Campaign title as set in dashboard (empty for flows)

Summer Sale

{{flow_id}}

Flow ID (empty for campaigns)

99

{{flow_name}}

Human-readable flow name (empty for campaigns)

Abandoned Cart

{{sequence_number}}

Automation reminder sequence number

1, 2

{{message_type}}

Always push for web push notifications

push

Tip: Use {{campaign_name}} in your campaign value and {{flow_name}} in your flow value for the most descriptive tracking in Google Analytics.

Verifying UTM Tracking

Want to make sure your UTM parameters are working correctly? Here’s how:

  1. Send a test notification from your PushOwl dashboard

  2. Click the notification when it appears on your device

  3. Check the URL in your browser’s address bar. You should see the UTM parameters appended to the end

  4. Check Google Analytics: go to Acquisition → Campaigns and look for pushowl as the source


Frequently Asked Questions

  1. Can I disable UTM tracking entirely?

    No. The three core parameters (utm_source, utm_medium, utm_campaign) are always enabled to ensure your analytics data remains consistent. You can disable utm_id and utm_term, and remove any custom parameters you’ve added.

  2. Will enabling UTM tracking change my existing Google Analytics data?

    Not at all. PushOwl has always appended UTM parameters to push notification URLs. The default values in your UTM settings match what was already being sent. You’ll see no change in your analytics unless you (or our support team) modify the values. Previously sent notifications are never affected.

  3. I want to change utm_source, utm_medium, or utm_campaign. How do I do that?

    These parameters are locked in the dashboard to protect your analytics. Please reach out to our support team and we’ll make the change for you. Keep in mind that changing these values will affect how future notifications appear in Google Analytics.

  4. What are the limits for custom parameters?

    • Maximum 10 custom parameters (in addition to the 5 standard ones)

    • Parameter key: up to 30 characters, only letters, numbers, hyphens, and underscores.

    • Parameter value: up to 64 characters

  5. I set a Campaign-only variable (like {{campaign_name}}) in the Flow column. What happens?

    The variable will resolve to an empty string for flow notifications since campaign-specific data isn’t available for flows. The parameter will still be appended to the URL, just with an empty value.

Did this answer your question?