1. Purpose and Ownership
Proper attribution means sales teams know exactly where a lead came from before they pick up the phone, enabling better conversations. For marketing teams, it means accurate ROI and the ability to track an enquiry all the way to settlement.
To achieve this, the flow of data must be seamless. Here is the ownership breakdown:
Media Agency
Owns UTM naming conventions and link generation. Ensures every paid ad and external link carries standard parameters.
Web Developer
Owns form data pass-through. Ensures UTMs are captured from the URL and sent to the CRM via hidden form fields.
Sales Team
Owns pipeline progression. Uses the mapped source data in realestate viewers to prioritise follow-ups.
2. UTM Naming Standards
Strict standards prevent pipeline fragmentation (e.g. tracking both facebook and fb separately). We recommend adopting a lowercase, underscore-separated format for all UTM parameters.
| Parameter | Definition | Standard Values (Examples) |
|---|---|---|
| utm_source | The platform or network | social, search, portal, edm, print |
| utm_medium | The channel or cost model | cpc, organic, email, display, qr |
| utm_campaign | Project name and phase | harbour_rise_launch, feb_newsletter |
| utm_content | Ad variant or audience | video-1, retargeting, carousel |
| utm_term | Search keyword or placement | off+the+plan+sydney |
3. Campaign Link Examples
When generating links for your campaigns, ensure the base URL resolves fully before the query string. Here are copy-ready examples for common property marketing channels:
Paid Social (Meta, Instagram, LinkedIn)
Paid Search (Google Ads)
External Portal Links (Domain / REA Developer Profiles)
EDMs (Email Newsletters)
Print & QR Codes (Site Hoarding, Brochures)
4. Website & Lead Form Requirements
For a project website, use the supported signed handoff rather than exposing an unauthenticated lead endpoint. An authorised project team member creates a project-specific secret in Settings → Website Handoff, gives the endpoint and secret to the server-side form handler, then sends form data with UTM context to the matching project.
Keep your UTM values in hidden form fields or session storage, but sign the final request on your server or edge function. Never put the signing secret in browser JavaScript.
Request body
{
"name": "Taylor Example",
"email": "taylor@example.com",
"phone": "+61 400 000 000",
"attribution": {
"source": "meta",
"medium": "cpc",
"campaign": "harbour_rise_launch",
"content": "video_walkthrough",
"term": "off_the_plan_sydney",
"landingPage": "https://project.example/enquire",
"referrer": "https://www.google.com/",
"capturedAt": "2026-08-25T10:15:00.000Z"
}
}Name plus either email or phone is required. The handoff uses the project in the endpoint, matches an existing project/email buyer safely, and preserves the first accepted website attribution on later submissions.
Copy-ready server-side Node example
import { createHmac, randomUUID } from "node:crypto";
const endpoint = process.env.REV_HANDOFF_ENDPOINT; // copy from Settings
const secret = process.env.REV_HANDOFF_SECRET; // server secret only
const body = { name, email, phone, attribution: {
source: utm_source, medium: utm_medium, campaign: utm_campaign,
content: utm_content, term: utm_term,
landingPage: landing_page, referrer: referrer,
capturedAt: new Date().toISOString(),
}};
const timestamp = Math.floor(Date.now() / 1000).toString();
const requestId = randomUUID().replace(/-/g, "");
const message = `${timestamp}.${requestId}.${JSON.stringify(body)}`;
const signature = "sha512=" + createHmac("sha512", secret)
.update(message).digest("hex");
await fetch(endpoint, { method: "POST", headers: {
"Content-Type": "application/json",
"X-Attribution-Timestamp": timestamp,
"X-Attribution-Request-Id": requestId,
"X-Attribution-Signature": signature,
}, body: JSON.stringify(body) });5. CRM & Portal Source Mapping
The signed website handoff and provider imports are complementary. Use the signed handoff for forms you control; use the CRM and portal integrations for native provider enquiries. Provider fields vary, so imports retain the source campaign and external reference they expose without requiring every provider to support the same custom UTM fields.
- Website leads: The signed handoff retains source, medium, campaign, content, term, landing page, referrer, and capture time. A later CRM refresh does not erase this accepted first-party context.
- Native Portal Enquiries: Leads submitted directly on realestate.com.au or Domain are handled by your CRM's XML parser. Ensure your CRM maps these sources to recognisable names like
domain.com.auorrealestate.com.au. - Source display: CRM and portal imports fill their native campaign/source and external reference where available. Sales can still filter the existing campaign workflow and see the richer website attribution separately on the buyer profile.
6. Pre-Launch QA Checklist
Never launch a paid campaign without completing this end-to-end test. Have the project administrator, developer, and sales lead verify the complete handoff.
- 1
Create the project secret
Open Website Handoff settings, select the project, create the signing secret, and store it in the website host’s secret manager.
- 2
Check attribution capture
Use a test link with
utm_source=qa_test&utm_campaign=launch. Confirm the form carries those values into the server-side handoff payload. - 3
Send the signed test
Use the built-in test form or submit from your server with a fresh request ID and current timestamp. Reusing a request ID should return a replay response rather than creating another buyer.
- 4
Verify provider coexistence
If the same lead also arrives through a CRM or portal, sync it and confirm its native campaign/reference may appear without replacing the first website attribution.
- 5
Verify in Pipeline
Open the pipeline, filter by UTM source, medium, or campaign, then open the buyer profile to confirm every captured attribution field.
7. What Sales Teams See Afterward
The final outcome of this integration is total clarity for the sales floor. When an agent opens a buyer profile, the mapped source data is visible immediately in the buyer sidebar.
Context-driven follow up
If the source reads Harbour Rise — Meta Launch, the agent knows this buyer came from a targeted campaign. If it reads Domain.com.au Project Profile, they know the buyer is actively comparing listings in the suburb.
This insight shapes the initial conversation, improves the buyer experience, and gives marketing a clearer feedback loop on the lead quality each channel is delivering.