Vitec Next Integration

Sync your Vitec Next (Vitec Megler) contacts and companies with Propstreet automatically.

Overview

Feature Support
Market Norway
Sync Direction Bidirectional
Real-time Updates Yes (customer-managed sync)
Contacts ✅ Full support
Companies ✅ Full support
Projects ✅ Full support (v1.2.0)
Prospects ✅ Full support (v1.2.0)
Properties ⚠️ API available (v1.3.0)

Data Mapping

Contact Fields

Vitec Next Propstreet Notes
First Name First Name
Last Name Last Name
Email Email Primary email synced
Mobile Phone Phone Preferred phone number
Categories Tags Mapped to Propstreet tags
Notes Notes See notes section below
Photo Profile Picture Via separate image API

Note: Vitec Next supports multiple phone numbers. We sync the mobile number to Propstreet's phone field.

Company Fields

Vitec Next Propstreet Notes
Company Name Name
Organization Number External Reference Used for matching
Country Country Code ISO 2-letter code
Website Homepage URL If available in custom fields
Domain Set directly or auto-extracted from URL
Company Logo Profile Picture Via separate image API

Note: Vitec Next's standard API may not include website fields. Check with your Vitec representative for custom field availability.

How Sync Works

Vitec → Propstreet

You control the sync through your own integration layer:

  1. Configure Vitec to send webhooks to your middleware (e.g., Zapier, Make, Azure Logic Apps, or custom service)
  2. Your middleware transforms and pushes data to Propstreet via our API
  3. Records are matched using email or organization number and created/updated in Propstreet

This gives you full control over sync timing, filtering, and data transformation.

Propstreet → Vitec

When you update a contact in Propstreet, you have two options:

Option A: Webhooks (Recommended)

  1. Register a Propstreet webhook for contact.* and company.* events
  2. Propstreet pushes changes to your endpoint in real-time
  3. Your middleware transforms and pushes to Vitec Next

Option B: Polling

  1. Your integration layer polls the Propstreet API for changes (using updated_since)
  2. Changes are transformed and pushed to Vitec Next via their API
  3. Your Vitec records stay in sync

Webhooks provide near real-time sync without polling overhead.

Duplicate Handling

We use smart matching to prevent duplicates:

  • Contacts: Matched by email address, then by name + phone
  • Companies: Matched by organization number (organisasjonsnummer)

If we detect a potential duplicate, we update the existing record rather than creating a new one.

Field Considerations

Secondary Email

Vitec Next supports two email addresses per contact. Propstreet syncs the primary email only; secondary emails are not synced.

Multiple Phone Numbers

Vitec Next has separate fields for mobile, home, work, and other phones. We sync the mobile number to Propstreet; other phone numbers are not synced.

Notes vs Strategy

Propstreet has two different fields for text information:

  • Strategy - Investment focus (e.g., "Office properties in Oslo, 50-200 MNOK")
  • Notes - Activity log entries (call notes, meeting summaries, etc.)

How you map Vitec Next's note field depends on your organization's usage:

  • If notes contain investment criteria → map to strategy field
  • If notes contain call logs/activity → use the Notes API endpoint
  • If mixed usage → consider keyword-based routing in your integration

Categories and Tags

Vitec Next categories can be mapped to Propstreet tags. Define your category-to-tag mapping in your integration layer.

Website and Domain

Vitec Next's standard API may not expose website fields for companies. If your Vitec installation includes custom fields for company websites:

  • Sync the website URL to Propstreet's homepageUrl field - domain is auto-extracted
  • Alternatively, set Propstreet's domain field directly if only the domain is available
  • When both homepageUrl and domain are provided, homepageUrl takes precedence
  • Use the domain for company matching alongside organization number

Contact your Vitec representative to determine if website fields are available in your installation.

Profile Pictures

Vitec Next uses a separate image API endpoint for photos:

  • Contact photos may be retrieved via the image API with a valid image ID
  • Company logos follow a similar pattern
  • Image IDs are typically stored as references in contact/company records

Sync considerations:

  • Check if your contact records include an image ID field
  • Use Vitec's image API to retrieve photos when syncing to Propstreet
  • Propstreet's profile picture upload accepts standard image formats (JPEG, PNG)

Setup Requirements

To build a Vitec Next integration, you'll need:

  1. Vitec Partner Access - Contact your Vitec representative to obtain API credentials
  2. Propstreet API Credentials - Generate in your account settings
  3. Integration Layer - Middleware to handle webhooks and API calls (Zapier, Make, Azure Logic Apps, n8n, or custom)

Getting Started

  1. Generate Propstreet API credentials in your account settings (requires login)
  2. Obtain Vitec partner credentials from your Vitec representative
  3. Review the Propstreet API documentation for endpoints and data models
  4. Set up your integration layer to sync data between Vitec Next and Propstreet
  5. Test with a small dataset before full rollout

You're responsible for building and maintaining the integration.

Projects & Prospects (v1.2.0)

Sync real estate listings between Vitec Next Estates and Propstreet Projects. Track investor prospects (spekulanter) through your pipeline with bidirectional classification sync.

Note: Vitec Next is a Norwegian real estate CRM. "Spekulant" (speculator) is the Norwegian term for prospective buyers/investors - this maps directly to Propstreet Prospects.

Estate to Project Mapping

Vitec Next Field Propstreet Project Notes
estateId externalRefs namespace: "vitec-next"
baseInformation.projectName name Property/project title
baseInformation.address Street, city, zip (metadata)
assignment.status status See status mapping below
price Asking price (custom field)
dateChanged updatedUtc For delta sync

Estate Contact Relations to Prospect Mapping

Vitec Relation Type Propstreet Prospect Notes
Speculator contactId Via Contact external ref lookup
Buyer contactId Confirmed buyer → bidder
Speculator status classification See status mapping below

Estate Status to Project State Mapping

Propstreet uses three separate fields for project state. Map Vitec estate statuses to the appropriate combination:

Vitec Status Norwegian status classification teaser.stage Notes
AssignmentAttempt Under intag open draft Property intake
Coming Kommer open active published Pre-marketing
SoonForSale Snart till salu open active published Coming soon
ForSale Till salu open active communicated Active listing
Paused Pausad open draft Temporarily off-market
Sold Såld closed Transaction completed
  • status: Lifecycle state (open, closed, deleted) — read-only, set by system
  • classification: Work stage (draft, active, inactive) — settable via API
  • teaser.stage: Teaser progress (property_added, drafting, published, verified, communicated) — read-only, set by system

Speculator Status to Classification Mapping

Vitec Speculator Status Code Propstreet Classification Notes
(new, no status) not_contacted Default state
Assigned 4 contacted Assigned to broker
Interested 3 interested General interest
VeryInterested 1 interested Highly interested
BeenOnShowing 2 interested Attended viewing
FollowingBidding 6 interested Monitoring bidding
JoinedBidding 0 bidder Active bidder
NotInterested 5 not_interested Declined interest
Buyer (relation type) bidder Confirmed buyer

Sync Architecture

Vitec → Propstreet (using Push Notifications):

Vitec supports real-time push notifications via the Notifications API.

  1. Subscribe to Estate and EstateContact events
  2. On webhook, fetch full estate record and contact relations
  3. Transform and push to Propstreet Projects API
// Handle Vitec webhook
async function handleVitecWebhook(payload) {
  const { type, event, id, estateId } = payload;

  if (type === "Estate" && event === "Update") {
    const estate = await vitec.get(
      `/Estate/GetCommercialProperty?estateId=${id}`
    );
    const project = await propstreet.post("/api/v1/projects", {
      name: estate.baseInformation.projectName,
      externalRefs: [{ namespace: "vitec-next", id: id }],
    });
  }

  if (type === "EstateContact" && event === "Update") {
    // Fetch contact relation and map speculator status to classification
    const relations = await vitec.get(
      `/${customerId}/Estates/${estateId}/ContactRelations`
    );
    // Upsert prospects with mapped classifications
  }
}

Propstreet → Vitec (using Webhooks):

  1. Register webhooks for project.* and prospect.* events
  2. Look up Vitec Estate ID from externalRefs
  3. Update Vitec via REST API (requires write permissions)
// Handle Propstreet webhook
async function handlePropstreetWebhook(payload) {
  const vitecId = payload.data.externalRefs?.find(
    (ref) => ref.namespace === "vitec-next"
  )?.id;

  if (payload.event === "prospect.updated" && vitecId) {
    const vitecStatus = mapClassificationToVitecStatus(
      payload.data.classification
    );
    // Update speculator status in Vitec
  }
}

function mapClassificationToVitecStatus(classification) {
  const mapping = {
    not_contacted: null,
    contacted: 4, // Assigned
    interested: 3, // Interested
    not_interested: 5, // NotInterested
    bidder: 0, // JoinedBidding
  };
  return mapping[classification];
}

Webhook Events

Subscribe to these Propstreet events for estate sync:

Event Description Vitec Action
project.created New project created Create Estate (if supported)
project.updated Project fields modified Update Estate
project.deleted Project soft-deleted Update status: Paused/Sold
prospect.created Investor added to prospect list Add EstateContact relation
prospect.updated Classification changed Update speculator status
prospect.deleted Investor deleted from prospect list Remove EstateContact relation

Vitec Push Notification Subscription

Subscribe to estate and contact events:

{
  "name": "propstreet-sync",
  "type": "Estate",
  "event": "Update",
  "statuses": ["ForSale", "Coming", "Sold"],
  "subtype": "CommercialProperty"
}
{
  "name": "propstreet-prospects-sync",
  "type": "EstateContact",
  "event": "Update",
  "subtype": "Speculator"
}

Example: Create Project with Vitec Reference

curl -X POST "https://app.propstreet.com/api/v1/projects" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Oslo Commercial Property",
    "externalRefs": [{ "namespace": "vitec-next", "id": "OBJ11385_1395932274" }]
  }'

Example: Lookup Project by Vitec ID

curl "https://app.propstreet.com/api/v1/projects/external/vitec-next/OBJ11385_1395932274" \
  -H "Authorization: Bearer $TOKEN"

Vitec-Specific Considerations

Property Types:

  • For commercial real estate, use CommercialProperty endpoint
  • Multi-unit developments use Project entity type
  • Residential properties have separate endpoints (House, HousingCooperative, etc.)

Viewing-Driven Sales:

  • Property viewings ("visning") are central to Norwegian real estate
  • BeenOnShowing status indicates meaningful engagement
  • Consider mapping showing attendance to interested classification

Bidding Process:

  • Norwegian bidding is transparent with JoinedBidding and FollowingBidding statuses
  • FollowingBidding contacts are engaged but not actively bidding
  • Both map to Propstreet interested or bidder depending on business rules

Rate Limits:

  • 20 requests per second
  • 600 requests per minute
  • 10,800 requests per hour

API References