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 | |
| 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:
- Configure Vitec to send webhooks to your middleware (e.g., Zapier, Make, Azure Logic Apps, or custom service)
- Your middleware transforms and pushes data to Propstreet via our API
- 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)
- Register a Propstreet webhook for
contact.*andcompany.*events - Propstreet pushes changes to your endpoint in real-time
- Your middleware transforms and pushes to Vitec Next
Option B: Polling
- Your integration layer polls the Propstreet API for changes (using
updated_since) - Changes are transformed and pushed to Vitec Next via their API
- 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
strategyfield - 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
homepageUrlfield - domain is auto-extracted - Alternatively, set Propstreet's
domainfield directly if only the domain is available - When both
homepageUrlanddomainare provided,homepageUrltakes 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:
- Vitec Partner Access - Contact your Vitec representative to obtain API credentials
- Propstreet API Credentials - Generate in your account settings
- Integration Layer - Middleware to handle webhooks and API calls (Zapier, Make, Azure Logic Apps, n8n, or custom)
Getting Started
- Generate Propstreet API credentials in your account settings (requires login)
- Obtain Vitec partner credentials from your Vitec representative
- Review the Propstreet API documentation for endpoints and data models
- Set up your integration layer to sync data between Vitec Next and Propstreet
- 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 systemclassification: Work stage (draft,active,inactive) — settable via APIteaser.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.
- Subscribe to
EstateandEstateContactevents - On webhook, fetch full estate record and contact relations
- 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):
- Register webhooks for
project.*andprospect.*events - Look up Vitec Estate ID from
externalRefs - 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
CommercialPropertyendpoint - Multi-unit developments use
Projectentity type - Residential properties have separate endpoints (
House,HousingCooperative, etc.)
Viewing-Driven Sales:
- Property viewings ("visning") are central to Norwegian real estate
BeenOnShowingstatus indicates meaningful engagement- Consider mapping showing attendance to
interestedclassification
Bidding Process:
- Norwegian bidding is transparent with
JoinedBiddingandFollowingBiddingstatuses FollowingBiddingcontacts are engaged but not actively bidding- Both map to Propstreet
interestedorbidderdepending on business rules
Rate Limits:
- 20 requests per second
- 600 requests per minute
- 10,800 requests per hour