HomeHelp CentreIntegration Guide

Media Agency & Marketing Team Integration Guide

Technical documentation for agencies, developers, and marketing teams to ensure clean campaign attribution, reliable lead capture, and perfect visibility in the buyer pipeline.

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.

Recommended UTM parameters and naming conventions
ParameterDefinitionStandard Values (Examples)
utm_sourceThe platform or networksocial, search, portal, edm, print
utm_mediumThe channel or cost modelcpc, organic, email, display, qr
utm_campaignProject name and phaseharbour_rise_launch, feb_newsletter
utm_contentAd variant or audiencevideo-1, retargeting, carousel
utm_termSearch keyword or placementoff+the+plan+sydney

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

json
{
  "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

javascript
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.au or realestate.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. 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. 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. 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. 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. 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.

Buyer details
Sarah Jenkins
sarah.j@example.com
Lead Source
Harbour Rise — Meta Launch
Campaign: harbour_rise_launch