Configuring Jodapp Key Events
Our architecture presents a unique tracking challenge: we share a single GA4 Data Stream across multiple codebases (jodapp.com running Rails/React, and gig-partners.jodapp.com running legacy Laravel).
If we tell Google Ads to optimize for generic page views, we risk mixing top-of-funnel job board traffic with bottom-of-funnel legacy app traffic. Furthermore, generic page views attract low-quality bot traffic, which harms our AdSense yield.
Key Event Naming Conventions
When using ecommerce events like view_item, view_item_list as a key event, ALWAYS ensure you are "slicing" the data based on the domain (gig-partners.jodapp.com vs jodapp.com).
As of 23 Feb 2026, we are using a SINGLE Data Stream in Google Analytics for:
jodapp.comgig-partners.jodapp.com
Both websites are sending view_item event. However, jodapp.com should be the START of the funnel. Any paid ads should always direct users to jodapp.com (NOT gig-partners.jodapp.com)
Format
{ecommerce-event-name}_{domain}
| GA4 Event Name | Domain | Key Event Name | Description |
|---|---|---|---|
view_item | jodapp.com | view_item_jodapp | User viewing a single job with many shifts in jodpap.com |
view_item_gig-partners | gig-partner.jodapp.com | view_item_gig-partners | User viewing a single shift for a single job in gig-partners.jodapp.com |
Note the dash - in view_item_gig-parters. The url is gig-partners.jodapp.com NOT gig_partners.jodapp.com
The Strategy: High-Intent view_item Tracking
Instead of tracking URLs, we rely on our frontend application logic. When a user clicks into a specific job detail page, our React frontend triggers a hardcoded Google Tag Manager (GTM) dataLayer push: event: "view_item".
We use this as our Key Event for Google Ads because:
- Intent: It guarantees the job component fully loaded for a real user.
- AdSense Quality: Users who actively view job details are the highest quality audience for our AdSense blocks.
- Resilience: It is immune to URL changes or broken UTM marketing parameters.
This happens for both:
- jodapp.com
- gig-partners.jodapp.com
Implementation Steps
To ensure Google Ads only spends money to acquire users viewing jobs on the main Jodapp domain (and not the legacy Laravel app), we created a custom, domain-strict Key Event in GA4.
Step 1: Create the Custom Event in GA4
Inside GA4 (Admin > Events > Create Event), we configured a new event named view_item_jodapp with the following strict conditions:
- Condition 1 (The Action):
event_nameequalsview_item - Condition 2 (The Domain Filter):
page_locationstarts withhttps://jodapp.com/
Why this matters: This ensures that if the Laravel app ever fires a view_item event, it is ignored by this specific conversion goal, keeping our ad data pure.
Step 2: Mark as Key Event
Once created, we toggle "Mark as key event" to ON.
- Default Value: We leave this empty. Assigning arbitrary dollar amounts to top-of-funnel page views artificially inflates Return on Ad Spend (ROAS) metrics and confuses the bidding algorithm.
- Counting Method: Set to "Once per session." If a user views 5 jobs in one sitting, we count them as 1 acquired user, not 5 separate conversions.
Step 3: Import to Google Ads
With the Key Event defined in GA4, the bridge is complete. Inside Google Ads (Goals > Conversions > Summary > Import), key_jodapp_job_view is now available to be imported and assigned as the primary optimization goal for our Website Traffic campaigns.