Attribution for SMEs: Connecting Marketing Spend to ERP Revenue Data
Ask an SME owner which channel produced last month’s revenue and you usually get a channel name. Ask which produced the most profit and the room goes quiet.
That gap is rarely a marketing skill problem. It is an architecture problem: marketing data and revenue data live in different systems and never meet.
I work on both sides of that line — certified in digital marketing, but spending most of my time building ERP systems. This piece is about the join between them, which is where most SME attribution actually breaks.
Why SME attribution breaks
Enterprise teams solve this with dedicated attribution platforms. SMEs cannot justify that cost, so they end up with a split:
- Marketing side: ad platform dashboards, social insights, maybe Google Analytics
- Revenue side: the ERP, POS, or accounting system
- Between them: nothing
Each side reports confidently within its own boundary. Ad platforms report conversions they can see; the ERP reports revenue without knowing where the customer came from. Neither can answer the only question that matters: which spend produced which revenue.
The result is predictable — budget gets allocated by whichever dashboard is loudest, usually the ad platform reporting on its own performance.
Stop optimising for lead volume
The most common failure I see is optimising the wrong stage.
| Optimising for | What you get |
|---|---|
| Impressions | Reach without intent |
| Clicks | Traffic that bounces |
| Leads | Volume, often unqualified |
| Closed revenue | The number that pays salaries |
A channel producing cheap leads that never close is worse than an expensive channel with a high close rate — it consumes both budget and your sales team’s time. But you cannot see that difference if measurement stops at the lead stage.
This is precisely why the ERP join matters. Close rate and deal value live in the ERP, not the ad platform.
The three metrics worth instrumenting
Customer acquisition cost (CAC)
Total marketing spend ÷ new customers acquired, per channel and per period.
Segment by channel or the number tells you nothing actionable. A blended CAC hides your best and worst channels inside the same average.
Lifetime value (LTV)
Average order value × purchase frequency × retention period.
The common mistake is measuring first-order value only. A customer worth $30 on first purchase who orders quarterly for two years is a $240 customer. Judging your CAC against $30 will make you turn off channels that are actually working.
Working benchmark: LTV should be at least 3× CAC. Below that, you are buying revenue at a loss once overheads are included.
Closed-won by source
Not leads by source — closed deals and their value by source.
This is the metric that requires the join. It cannot be produced from an ad dashboard alone, because the ad platform does not know which deals closed or what they were worth.
Implementing the join
The technical work is smaller than most people expect. Three pieces:
1. Capture source at first contact
Every entry point carries a distinguishable identifier.
For web traffic, UTM parameters:
example.com/pricing?utm_source=linkedin&utm_medium=organic&utm_campaign=q3
For messaging channels — which dominate in many markets — pre-filled messages serve the same purpose:
wa.me/62XXXXXXXXX?text=Enquiry%20from%20catalogue
The point is not the mechanism. It is that the source arrives with the enquiry rather than being reconstructed later from memory.
2. Persist source on the customer record
This is the step that gets skipped, and the one that makes everything else possible.
In Odoo, res.partner and crm.lead both carry campaign, source, and medium
fields out of the box. They exist by default and sit empty in most
implementations I audit.
Populate them at creation and the field travels with the customer through every quotation, sales order, and invoice that follows.
3. Report on revenue, not activity
Once source is on the customer record, revenue reporting by channel becomes a grouping operation rather than a monthly reconciliation project.
You can then answer directly:
- Revenue per channel, this quarter versus last
- Average deal size by acquisition source
- Time from first contact to closed-won, per channel
- Which sources produce customers who reorder
None of that needs an attribution platform. It needs the source field populated and one report definition.
Practical caveats
Attribution is directional, not exact. Customers touch multiple channels before buying. First-touch and last-touch attribution both tell partial truths. For SME decision-making, directionally right beats precisely wrong — you need to know which channels to fund, not to settle a philosophical debate.
Data quality determines usefulness. If the source field is filled inconsistently, reports will be confidently wrong. Constrain it to a fixed list rather than free text. I have cleaned enough client databases to know that free text becomes forty spellings of the same channel within a year.
Give changes a full sales cycle. Judging a campaign after a week when your sales cycle is a month measures noise. Match the evaluation window to how long buying actually takes.
FAQ
Do we need a dedicated attribution tool? Not at SME scale. If you already run an ERP or CRM, the fields exist. The work is populating them consistently and building one report — not buying software.
What if most enquiries arrive by phone or WhatsApp? Use distinct numbers or pre-filled messages per channel, and make source capture part of the intake script. Manual capture that actually happens beats automated capture that was never configured.
How do we handle multi-touch journeys? Start with first-touch — it tells you which channels create awareness, which is the decision most SME budgets hinge on. Add last-touch once first-touch reporting is reliable. Skip full multi-touch modelling until volume justifies it.
Our historical data has no source at all. Where do we start? From today, forward. Retroactive attribution on records that never captured source is guesswork dressed as analysis. Instrument new records properly and you will have a usable quarter of data within a quarter.
If your revenue data is solid but disconnected from your marketing activity, that join is usually a short piece of work. Happy to look at how your systems are set up and where the gap sits.