UTM & Google Analytic Custom Events

Support » Websites & Apps » UTM & Google Analytic Custom Events

netPark does not offer SEO services, nor do we set up or manage Google Analytics, Google Tag Manager, or any related tracking tools for clients. The documentation provided below is for informational purposes only. It explains how our modules interact with Google Analytics, Google Tag Manager, and UTM code tracking, as well as the events we send as part of this process.

If you require assistance with SEO, Google Analytics, or Google Tag Manager setup and management, we recommend consulting a qualified professional or service provider.

Website

Initial Setup

Google Analytics 4 (GA4)

Creating a GA4 Account:

Please follow Google’s support page by clicking here.

How to Get Your GA4 ID:

  1. Sign in to Google Analytics: Go to analytics.google.com and log in with your Google account.
  2. Click “Admin”: This option is located in the bottom-left corner of the page.
  3. Select the Correct Property: Use the dropdown menu to choose the appropriate property.
  4. Click “Data Streams”: You’ll find this in the Property column.
  5. Select the Relevant Data Stream: Choose the data stream associated with your website.
  6. Locate the “Google Tag” Section: On the “Web Stream Details” page, scroll to the “Google tag” section.
  7. Click “Configure Tag Settings”:
  8. Find Your GA4 ID: Your Measurement ID (in the format G-XXXXXXX) will be displayed in the “Your Google tag” section.

You will need this for the next step

Google Tag Manager (GTM)

Creating a GTM acccount:

Please follow Google’s support page by clicking here.

How to get your GTM ID:

  1. Log into Google Tag Manager: Go to tagmanager.google.com and sign in with your Google account.
  2. Open a Container: Select the relevant GTM account, then click on the container you want to use.
  3. Locate the GTM ID: Inside the container, look in the top-right corner next to the “Submit” and “Preview” buttons. The ID will be displayed in the format GTM-XXXXXX.

You will need this for the next step

Adding Tracking Codes in WordPress

  1. In your WordPress dashboard, go to netPark Settings.
  2. Look for the fields labeled Google Analytics 4 Code and Google Tag Manager. These are typically the second and third options in the settings.
  3. Enter your GA4 Measurement ID (e.g., G-XXXXXXX) and/or your GTM Container ID (e.g., GTM-XXXXXX) in the appropriate fields.
  4. Save your changes to apply the tracking codes.

Use the codes you obtained from the previous steps above. It is recommended to only use one ga or gtag, not both

UTM Data

UTM Tracking with netPark:

When UTM parameters are included in the URL, netPark captures and attaches them to all relevant events listed in the events section. For more information on UTM data click here.

Example: https://reservations.netpark.us/?utm_id=myId&utm_source=facebook&utm_campaign=myCamp

Which UTM parameters are tracked?

  • utm_id – Campaign ID. Used to identify a specific campaign or promotion. This is a required key
  • utm_source – Identifies the source of the traffic (e.g., Google, Facebook, Newsletter).
  • utm_medium – Marketing medium, for example: cpc, banner, email.
  • utm_campaign – Names the campaign associated with the traffic.
  • utm_source_platform – Indicates the advertising platform (e.g., Google Ads, Meta Ads).
  • utm_term – Identifies the keyword or term used in paid search campaigns.
  • utm_content – Differentiates similar content or links within the same ad or campaign.
  • utm_creative_format – Describes the type of creative used (e.g., banner, video, carousel).
  • utm_marketing_tactic – Helps specify the marketing strategy or tactic used.

These values are passed along with every captured netPark custom event. This enables you to analyze how users arrive at your site and how campaigns perform over time.

Custom Netpark Events

All events will be in this format:

With “event” being the event name, and “eventModel:” being the parameters.

event:"fetchReservationPriceQuotes",
eventModel: { startDate: "2025-03-28 20:00", endDate: "2025-03-31 20:00", promoCode: "" },

Any data contained in the gtm object is automatically added by google tag manager.

Reservation Page

#Event NameParametersDescription
1locationChangenewLocationCodeID: stringWhen the location is changed, sends over the new location in this format: location#-subLocation#
2fetchReservationPriceQuotesstartDate: Date(“YYYY-MM-dd hh:mm”),
endDate: Date(“YYYY-MM-dd hh:mm”),
promoCode: string
When the customer clicks the button, sends over the start date, end date, and promo code
3genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “reservationLookup” here.
4genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “signIn” here.
5showQuoteDetailstheQuote: quoteObject,
fromClickingWidgetExtraInfo: string
This is sent when the info “i” is hovered. The quote will be all the quote details. fromClickingWidgetExtraInfo will be from which screen or webpage it was pressed. fromClickingWidgetExtraInfo is mostly pertinent in the app
6userSelectedQuotetheQuote: quoteObjectWhen the customer clicks to select a quote, this event is sent.

netPark does not send any of the data filled out here. If you are wanting to track customer progressing through this section you can use a standard google click event. The name send with the click will be “Reservation – Services” like seen below.

#Event NameParametersDescription
1clickname: stringThe name will be:
Reservation – Services
#Event NameParametersDescription
1aeditServicesAddServiceserviceAdded: serviceObjectWhen a service is selected the details of the service being added will be sent.
1beditServicesRemoveServiceserviceRemoved: serviceObjectWhen a service is unselected the details of the service being removed will be sent.
2clickFinalizeServiceChangesservices: serviceObject[]When clicked, will send over an array of serviceObject’s. If “No Services” is pressed, then an empty array will be sent.
#Event NameParametersDescription
1reservationEditButtonClickedit: stringWhen clicked, this will send over which part of the reservation form is now being edited.
2clickFinalizeServiceChangesservices: serviceObject[]When clicked, will send over an array of serviceObject’s. If “No Services” is pressed, then an empty array will be sent.
#Event NameParametersDescription
1agenericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “showTOS” here.
1bgenericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “closeTOS” here.
2aclckdBookReservationAndShowingTOSfromInfo: stringIf there are terms of service, then this event will be sent.
2bclickedSaveReservationalsoCheckedSaveToAccountProfile: boolean
fromInfo: string
If the reservation is saved with no errors this event is sent. alsoCheckedSaveToAccountProfile is if a new card was saved to an account
#Event NameParametersDescription
1clickedCancelReservationFromTOSbuttonName: string,
fromInfo: string
This event is sent when the decline button is hit.
2aclickedBookReservationFromTOSfromInfo: stringIf there are terms of service, then this event will be sent.

Login Popup

#Event NameParametersDescription
1loginAttemptlocation: stringlocation in this format: location#-subLocation#.
2genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “forgotPassword” here.
3genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “signUp” here.
#Event NameParametersDescription
1genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “continueAsGuest” here.
2genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “backToSignIn” here.
3genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “signUp” here.

Profile Page

#Event NameParametersDescription
1clickedButtonToMoveToTabdestinationTab: stringThis is only viewable if the customer is a company admin. This event is used to notify when different tabs are being accessed.
destinationTab = “group” here.
2clickedButtonToMoveToTabdestinationTab: string
This event is used to notify when different tabs are being accessed.
buttonName = “backToSignIn” here.
3genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “changePassword” here.
4genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “editPersonalInfo” here.
#Event NameParametersDescription
1clickedButtonToMoveToTabdestinationTab: stringThis is only viewable if the customer is a company admin. This event is used to notify when different tabs are being accessed.
destinationTab = “group” here.
2clickedButtonToMoveToTabdestinationTab: string
This event is used to notify when different tabs are being accessed.
buttonName = “backToSignIn” here.
3genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “changePassword” here.
4genericButtonPressedbuttonName: string,
fromInfo: string
This is a generic button press event. buttonName will be the name of the button pressed.
buttonName = “editPersonalInfo” here.

Purchase Event

The purchase event a a google analytics specific object that hold data specific to google. Google documentation can be found here. The items sent over will be the rate sent over, any service added, and all options set inside of netPark.

Below are the custom properties being added to the purchase event. Since GA4 doesn’t allow objects to easily be sent over, we flatten the object and add them as custom parameters.

If you look at the 2 objects they are identical except on GTM it stores like items in objects. These objects are: “parking”, “vehicle”, and “transaction”. See below for an example.

Parameter Name Description
parkingEntryDateReservation start date in MM-DD-YYYY (month-day-year) format
parkingEntryTimeReservation start time in hh:mm a (hour:minute AM/PM) format
parkingExitDateReservation end date in MM-DD-YYYY (month-day-year) format
parkingExitTimeReservation end time in hh:mm a (hour:minute AM/PM) format
parkingTotalHoursTotal number of hours between reservation start and end
quoteNameName of the rate selected
quoteBreakdownDetailed pricing breakdown of the selected quote
parkingZoneParking zone assigned to the reservation
paymentTypeType of payment method used (if applicable)
vehicle_makeVehicle make associated with the reservation
vehicle_modelVehicle model associated with the reservation
vehicle_colorVehicle color associated with the reservation

Custom Parameters on Purchase Event

The example below will also include all other google analytics required data, which can be found on their documentation.

GA4

{
  "event": "purchase",
  "eventModel": {
    "parkingEntryDate": "01-27-2026",
    "parkingEntryTime": "10:00 am",
    "parkingExitDate": "01-27-2026",
    "parkingExitTime": "03:00 pm",
    "parkingTotalHours": 5,
    "quoteName": "self uncovered1",
    "quoteBreakdown": "[{\"start_date\":1769533200, \"unit\":\"day\", \"quantity\":1, \"fee\":5.27,\"fpp\":0}]",
    "parkingZone": 1,
    "paymentType": "VI",
    "vehicle_make": "Toyota",
    "vehicle_model": "Rav4",
    "vehicle_color": "Blue"
  }
}

GTM

{
  "event": "purchase",
  "eventModel": {
    "parking": {
      "parkingEntryDate": "01-27-2026",
      "parkingEntryTime": "10:00 am",
      "parkingExitDate": "01-27-2026",
      "parkingExitTime": "03:00 pm",
      "parkingTotalHours": 5,
      "quoteName": "self uncovered1",
      "quoteBreakdown": [
        {
          "start_date": 1769533200,
          "unit": "day",
          "quantity": 1,
          "fee": 5.27,
          "fpp": 0
        }
      ],
      "parkingZone": 1
    },
    "transaction": {
      "paymentType": "VI"
    },
    "vehicle": {
      "vehicle_make": "Toyota",
      "vehicle_model": "Rav4",
      "vehicle_color": "Black"
    }
  }
}

Purchase Items

We send over up to 3 different purchase item categories: Parking, Option/Fee, Services.

Parking Item
Parameter Name Description
item_idThis will be “rate_” + the rate_id. Rate_id will come from netpark
item_nameThe rate name from inside netpark
pricePrice of parking pretax
item_categoryThe category of this item. This will be “Parking”
couponCoupon / promo code being used
discountAmount being saved from the coupon
quantityHow many of this added. Will be 1
item_variantThe variant of this item. This will be “website”
number_of_passengers*Number of passengers that can netPark collected from form (if set)
booked_checkin*Reservation start date in YYYY-MM-DD hh:mm:ss (year-month-day hour:minute:second) format
booked_checkout*Reservation end date in YYYY-MM-DD hh:mm:ss (year-month-day hour:minute:second) format
booked_stay_length*How long the reservation is in days hours and minutes
booked_out*The different between when the reservation was booked and the reservation start date in days hours and minutes
company*The company associated with the reservation
parking_zone*Parking zone associated with the reservation

* This parameter is a custom parameter, not normally included on google purchase items.

Option/Fee Item

These are manditory options that are created inside of netpark. There can be multiple options/fees added to the purchase event.

Parameter Name Description
item_idThis will be “option_” + option_id. Option_id will come from netpark
item_nameThe option/fee name from inside netpark
pricePrice of the option/fee
item_categoryThe category of this item. This will be “Option/Fee”
quantityHow many of this added. Will be 1
item_variantThe variant of this item. This will be “website”
Services Item

This is the service added to the reservation.

Parameter Name Description
item_idThis will be “service_” + service_id. service_id will come from netpark
item_nameThe service name from inside netpark
pricePrice of the service
item_categoryThe category of this item. This will be “Services”
quantityHow many of this added. Will be 1
item_variantThe variant of this item. This will be “website”

Full Purchase Event Example

GA4

{
  "event": "purchase",
  "eventModel": {
    "value": "6.54",
    "items": [
      {
        "item_id": "rate_2",
        "item_name": "self uncovered1",
        "price": "3.16",
        "item_category": "Parking",
        "coupon": "test",
        "discount": "2.11",
        "quantity": 1,
        "item_variant": "website",
        "number_of_passengers": 3,
        "booked_checkin": "2026-01-27 10:00:00",
        "booked_checkout": "2026-01-27 15:00:00",
        "booked_stay_length": "0 days 5 hours 0 minutes",
        "booked_out": "0 days 20 hours 41 minutes",
        "company": null,
        "parking_zone": 1
      },
      {
        "item_id": "option_2",
        "item_name": "Illinois Clean Act",
        "price": "2.00",
        "item_category": "Option/Fee",
        "quantity": 1,
        "item_variant": "website"
      },
      {
        "item_id": "service_1",
        "item_name": "Car Wash",
        "price": "1.00",
        "item_category": "Services",
        "quantity": 1,
        "item_variant": "website"
      }
    ],
    "transaction_id": 600217,
    "coupon": "test",
    "tax": "0.38",
    "currency": "USD",
    "user_id": "",
    "user_data": {
      "address": {
        "sha256_first_name": "encryptedData",
        "sha256_last_name": "encryptedData",
        "sha256_street": "encryptedData",
        "city": "las vegas",
        "region": "nv",
        "postal_code": 88601,
        "country": "US"
      },
      "sha256_email_address": "encryptedData",
      "sha256_phone_number": "encryptedData"
    },
    "parkingEntryDate": "01-27-2026",
    "parkingEntryTime": "10:00 am",
    "parkingExitDate": "01-27-2026",
    "parkingExitTime": "03:00 pm",
    "parkingTotalHours": 5,
    "quoteName": "self uncovered1",
    "quoteBreakdown": "[{\"start_date\":1769533200, \"unit\":\"day\", \"quantity\":1, \"fee\":5.27,\"fpp\":0}]",
    "parkingZone": 1,
    "paymentType": "VI",
    "vehicle_make": "Toyota",
    "vehicle_model": "Rav4",
    "vehicle_color": "Blue"
  }
}

GTM

{
  "event": "purchase",
  "eventModel": {
    "value": "6.54",
    "items": [
      {
        "item_id": "rate_2",
        "item_name": "self uncovered1",
        "price": "3.16",
        "item_category": "Parking",
        "coupon": "test",
        "discount": "2.11",
        "quantity": 1,
        "item_variant": "website",
        "number_of_passengers": 3,
        "booked_checkin": "2026-01-27 10:00:00",
        "booked_checkout": "2026-01-27 15:00:00",
        "booked_stay_length": "0 days 5 hours 0 minutes",
        "booked_out": "0 days 20 hours 20 minutes",
        "company": null,
        "parking_zone": 1
      },
      {
        "item_id": "option_2",
        "item_name": "Illinois Clean Act",
        "price": "2.00",
        "item_category": "Option/Fee",
        "quantity": 1,
        "item_variant": "website"
      },
      {
        "item_id": "service_1",
        "item_name": "Car Wash",
        "price": "1.00",
        "item_category": "Services",
        "quantity": 1,
        "item_variant": "website"
      }
    ],
    "transaction_id": 600218,
    "coupon": "test",
    "tax": "0.38",
    "currency": "USD",
    "user_id": "",
    "user_data": {
      "address": {
        "sha256_first_name": "encryptedData",
        "sha256_last_name": "encryptedData",
        "sha256_street": "encryptedData",
        "city": "las vegas",
        "region": "nv",
        "postal_code": 88601,
        "country": "US"
      },
      "sha256_email_address": "encryptedData",
      "sha256_phone_number": "encryptedData"
    },
    "parking": {
      "parkingEntryDate": "01-27-2026",
      "parkingEntryTime": "10:00 am",
      "parkingExitDate": "01-27-2026",
      "parkingExitTime": "03:00 pm",
      "parkingTotalHours": 5,
      "quoteName": "self uncovered1",
      "quoteBreakdown": [
        {
          "start_date": 1769533200,
          "unit": "day",
          "quantity": 1,
          "fee": 5.27,
          "fpp": 0
        }
      ],
      "parkingZone": 1
    },
    "transaction": {
      "paymentType": "VI"
    },
    "vehicle": {
      "vehicle_make": "Toyota",
      "vehicle_model": "Rav4",
      "vehicle_color": "Black"
    }
  }
}

Notes

fromInfo is which app screen the user was on when the button was pressed. fromInfo is only applicable in the customer loyalty app.

See Our documentation to see more object schemas.

This page was updated January 27 2026

App

Contact us!

Phone Hours
(833) 638-7275
Monday – Friday: 10AM to 6PM EST
Emergency Support – 24/7 for business critical functions

Contact Us
Please use this form to contact us with any non-emergency comments, problems or inquiries. Be sure to provide details. If this is an emergency or requires immediate assistance, please call netPark Emergency Support.