Fix GA4 Server-Side Purchase Tracking and Stripe/Google Ads Attribution
Budget: $35.0 - $75.0
HOURLY / PART_TIME
⭐ 4.77 (115)
Canada
google-analytics, google-tag-manager, api, next.js
Bevorzugte Qualifikationen
- Erfahrung: Experte
We have a custom ecommerce website built with Next.js/React and a FastAPI backend. Server-side tracking is already implemented, but an audit found missing purchases, duplicated revenue and incorrectly classified payment events.
Website payments are processed through Airwallex and PayPal. Phone orders are paid through Stripe invoices.
We need an experienced tracking engineer to diagnose and fix the existing implementation. This is not a Google Ads management role and is not simply a Google Tag Manager installation.
## Scope of work
* Audit the existing frontend, backend, webhooks and analytics events
* Identify why some purchases are missing or duplicated
* Make the backend paid-order record the source of truth
* Send exactly one GA4 Measurement Protocol purchase per paid order
* Use the backend order number as the transaction ID
* Preserve GA4 client/session IDs and marketing attribution
* Implement reliable idempotency for webhook and API retries
* Properly separate website, phone, reseller and other order sources
* Keep order source separate from marketing acquisition source
### Website purchases
* Confirm payment through Airwallex or PayPal webhooks
* Send the GA4 purchase only after the backend marks the order paid
* Include transaction ID, value, currency and item-level data
* Prevent browser or thank-you-page events from duplicating purchases
### Phone orders paid through Stripe
* Store phone orders as pending until payment is confirmed
* Add internal order and lead IDs to Stripe invoice metadata
* Implement and verify a Stripe `invoice.paid` webhook
* Match each invoice to the correct backend order
* Send one server-side GA4 purchase with `order_source=PHONE`
* Preserve GCLID, GBRAID, WBRAID, UTMs and GA4 identifiers when available
* Upload paid phone sales as Google Ads offline conversions
* Implement Enhanced Conversions for Leads using properly hashed customer data
* Ensure cross-device invoice payments are tracked correctly
* Do not classify every Stripe payment as a phone order
### Refunds
* Support full and partial refunds
* Send GA4 refund events
* Submit Google Ads conversion adjustments
* Prevent refunded or failed payments from being reported as completed sales
## Deliverables
* Written diagnosis before making production changes
* Code changes through our existing repository
* Staging tests
* Production implementation
* Before-and-after reconciliation report
* Short documentation explaining the final tracking flow
* List of any credentials or configuration we need to maintain
## Acceptance criteria
* Every backend paid order creates exactly one conversion record
* Duplicate webhooks and page reloads create no duplicate revenue
* Failed or unpaid orders create no purchase
* Cross-device Stripe invoice payments are recorded correctly
* Website and phone orders can be reported separately
* Order source and marketing source can be analyzed independently
* Google Ads offline conversion diagnostics show successful uploads
* Refunds correctly adjust GA4 and Google Ads reporting
## Required experience
* GA4 Measurement Protocol
* Google Ads offline conversion imports
* Enhanced Conversions for Leads
* Stripe invoices and webhooks
* Python/FastAPI
* Next.js/React
* Ecommerce attribution and conversion deduplication
## Contract
This is an hourly contract.
* Preferred rate: $40–$70 per hour
* Initial paid diagnostic limited to two hours
* Implementation begins after we approve the diagnosis
* Expected total: approximately 6–10 hours
* Do not exceed 10 hours without written approval
Our existing developer may be available to answer questions about the architecture.
## Application questions
Please begin your proposal with the word **BACKEND**.
1. Describe a project where you implemented GA4 server-side purchases and Google Ads offline conversions.
2. How would you prevent duplicate purchases caused by webhook retries and browser events?
3. How would you connect a Stripe invoice paid on another device to the original Google Ads click?
4. Have you worked with Stripe invoices, FastAPI and Next.js?
5. What would you examine during the initial two-hour diagnostic?
6. What is your estimated number of hours for this project?
Auf Upwork öffnen
AI proposal draft
Generate a short cover letter for this job. Edit before sending.
Sign in to generate an AI proposal draft.
Anmelden