Strategy · 28 October 2026
CRM and GA4 Don't Agree: A Data Analytics Consultancy Brief for Malaysia
Reconcile CRM and GA4 revenue in Malaysia using shared order definitions, refunds, timing and attribution. Give management a reporting basis it can inspect.
By Digital Squad

Key Insights
- Reconcile the same orders under the same definition before comparing headline revenue totals.
- Separate missing transactions from differences caused by refunds, timing, currency and attribution.
- Give management a documented revenue basis, a marketing view and an explicit explanation of the remaining gap.
Finance brings one revenue total to the meeting. The CRM has another, and GA4 shows a third. Marketing suspects a tracking problem; sales says the dashboard is ignoring orders. Nobody can explain whether the difference changes the budget decision.
A Malaysian business needs to settle what each number represents before commissioning a replacement dashboard. A CRM opportunity marked won, an accepted order and an online purchase event can describe different moments in the same customer relationship. Matching their totals without matching their meaning produces a fragile answer.
A data analytics consultancy brief should ask for a reconciliation that another person can repeat. Specify the commercial decision, the records being compared and who will approve the definitions. The deliverable is a defensible explanation of revenue and marketing contribution, with unresolved gaps kept visible.
Agree what the business means by revenue
Start with finance's reporting basis. Ask whether the management number represents orders booked, invoices issued, cash collected or revenue recognised under the company's accounting policy. Marketing shouldn't select that basis on finance's behalf.
Then inspect what the CRM records. A won opportunity may contain an estimate, cover several orders or remain unchanged after a cancellation. A separate order system may hold the actual value. Identify the record that establishes the commercial outcome and the events that change it.
For GA4, inspect the purchase implementation rather than relying on the report label. Check what triggers the event and what enters its value. A confirmation page might pass a total that includes delivery, while the management report excludes it. An enquiry or deposit shouldn't quietly become a completed sale because the event has been named purchase.
Write the agreed definition beside the report. Include the treatment of taxes, shipping, discounts and any deposits. Where Malaysian sales and overseas orders are combined, state the reporting currency and exchange-rate policy. Two systems can be internally consistent and still answer different financial questions.
Compare a closed period at order level
Choose a reporting period with enough time for routine processing and adjustments. Google's data freshness guidance says processing can take 24–48 hours and report data may change during that time. A comparison of today's live dashboard with a settled finance extract is therefore a poor first test.
Align the date boundaries and time zones. A late-night order can fall into different days when one system uses Malaysian time and another stores or displays UTC. Agree whether inclusion follows order creation, payment confirmation or another defined date, then apply that rule consistently.
Export the minimum fields needed to match records securely: order reference, relevant timestamps, currency, value and status. Add campaign information only where the reconciliation needs it. Keep access within the company's approved arrangements; a shared reporting file doesn't need every customer detail held in the CRM.
Create matched, missing and unmatched groups. For matched orders, calculate the value difference. For records found in only one system, investigate the journey before making an assumption about why the order is absent. Retain the original source values so a later reviewer can reproduce the calculation.
Check transaction identity before chasing attribution
An order reference gives the investigation a common unit. Without it, teams often compare event totals that contain retries, test activity or several actions related to one order. Ask whether the reference survives checkout, payment redirects and the CRM import.
Google documents how transaction IDs support purchase deduplication for web streams. The ID needs to be unique to the order; empty or reused values can create further problems. Confirm the implementation with test cases for a normal purchase and a return to the confirmation page.
A shared identifier also needs a business rule. A replacement order, split shipment and amended order may use different references in different systems. Decide how those relationships will be represented before joining them mechanically. Matching two rows doesn't establish that they should contribute twice to revenue.
Keep missing identity separate from missing capture. An analytics event may exist but lack the order reference needed to join it. That requires a different fix from an event that never fired. The distinction helps the web and data teams focus on the actual failure.
Follow refunds and offline changes
Inspect what happens after the initial sale. A cancellation recorded in the CRM won't automatically correct GA4 simply because both systems captured the original order. The adjustment needs its own supported data path.
Google's ecommerce implementation guidance describes sending refund events, including partial refunds. Check whether your implementation sends them and associates them with the relevant transaction. A configured purchase event alone doesn't establish complete net-revenue reporting.
Phone orders, bank-transfer confirmations and sales-assisted purchases need their own treatment. Some may never have a corresponding online purchase event. Record which journeys GA4 is expected to observe, which require an integration and which remain outside the agreed marketing view.
Don't force the analytics total to equal finance by inserting an unexplained adjustment. Show the bridge from the commercial total to the measurable digital subset. Management can then distinguish an operational sales channel from a broken measurement path.
Reconcile revenue before allocating channel credit
Once order counts and values are understood, compare acquisition reporting. A CRM source field may store the first known enquiry source, while an analytics report applies attribution under its selected scope and settings. Neither field automatically explains the entire buying journey.
Name the report and dimensions being used, along with the attribution and lookback settings that affect the question. Preserve an unknown category where campaign context is absent. Guessing the source from a salesperson's memory creates apparent precision without evidence.
Agree which decisions each view supports. Finance's approved basis can govern company revenue. A reconciled order dataset can support commercial analysis. GA4 can explain observed digital behaviour and attributed outcomes within its coverage. Connected marketing analytics should make those relationships inspectable when leaders assess investment.
Set a Data Analytics Consultancy Brief That Can Be Signed Off
Require a definition sheet, an order-level reconciliation and a list of remaining gaps with owners. Each proposed repair should include a verification method and the reporting decisions it changes. Repeat the comparison after implementation using the same agreed basis.
Ask Digital Squad to scope a CRM-to-GA4 revenue reconciliation. Start with one closed period and the three reports management currently sees, so the work resolves the disagreement behind the numbers.



