SuperOffice Integration
Sync your SuperOffice CRM contacts and companies with Propstreet automatically.
Overview
| Feature | Support |
|---|---|
| Market | Norway (Nordic-wide) |
| Sync Direction | Bidirectional |
| Real-time Updates | Yes (customer-managed sync) |
| Contacts | ✅ Full support |
| Companies | ✅ Full support |
Data Mapping
SuperOffice Terminology
SuperOffice uses different terminology than most CRMs:
| SuperOffice | Propstreet | What It Represents |
|---|---|---|
| Person | Contact | An individual |
| Contact | Company | A company/firm |
Person Fields (Individual)
| SuperOffice | Propstreet | Notes |
|---|---|---|
| Firstname | First Name | |
| Lastname | Last Name | |
| Primary email synced | ||
| Mobile Phone | Phone | Preferred phone number |
| Title | Job Title | Synced to company connection |
| ContactId | Connection | Links person to company |
| Category | Tags | Mapped to Propstreet tags |
| PersonId | External Ref | Used for record matching |
Note: SuperOffice may have multiple phone fields. We sync the mobile phone to Propstreet's phone field.
Contact Fields (Company)
| SuperOffice | Propstreet | Notes |
|---|---|---|
| Name | Name | |
| OrgNr | External Reference | Used for matching (Norwegian org.nr) |
| Country | Country Code | ISO 2-letter code |
| URL | Homepage URL | Full website URL |
| — | Domain | Set directly or auto-extracted from URL |
How Sync Works
SuperOffice → Propstreet
You control the sync through your own integration layer:
- Configure SuperOffice Webhooks to send events to your middleware (e.g., Azure Logic Apps, n8n, 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 → SuperOffice
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 SuperOffice
Option B: Polling
- Your integration layer polls the Propstreet API for changes (using
updated_since) - Changes are transformed and pushed to SuperOffice via their API
- Your SuperOffice records stay in sync
Webhooks provide near real-time sync without polling overhead.
Duplicate Handling
We use smart matching to prevent duplicates:
- Persons: Matched by email address first, then SuperOffice Person ID via
externalRefs - Companies: Matched by organization number (OrgNr), then domain, then company name
SuperOffice also provides built-in duplicate detection that your integration can leverage:
- Domain-based duplicate checks for companies
- Name-based duplicate detection
- Configurable duplicate rules
If we detect a potential duplicate, we update the existing record rather than creating a new one.
Field Considerations
Foreign Keys for Reliable Sync
SuperOffice supports foreign keys as a first-class feature for integrations. Store Propstreet IDs in SuperOffice's foreign key fields, and store SuperOffice IDs in Propstreet's externalRefs:
{
"externalRefs": [{ "namespace": "superoffice", "id": "12345" }]
}
This enables deterministic matching without relying on name or email matching.
Person↔Company Relationships
In SuperOffice, each Person has a primary company association via ContactId. In Propstreet:
- Each contact can have multiple company connections
- Exactly one connection must be marked as
primary - Job title is stored on the connection, not the contact
When syncing, ensure you:
- Create or find the company first
- Link the person to the company with the appropriate job title
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 SuperOffice's note/activity fields 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
Phone Numbers
SuperOffice has multiple phone fields per person (Mobile, Direct, etc.). We sync the mobile number to Propstreet; other phone numbers are not synced by default.
Organization Number (Norwegian)
SuperOffice has native support for organization numbers via the OrgNr field. This is ideal for Norwegian company matching and deduplication.
Setup Requirements
To build a SuperOffice integration, you'll need:
- SuperOffice Account with API access
- Development Tools License - Required for webhook support (real-time sync from SuperOffice)
- Propstreet API Credentials - Generate in your account settings
- Integration Layer - Middleware to handle webhooks and API calls (Azure Logic Apps, n8n, or custom)
Webhook License Note
SuperOffice webhooks require the "Development Tools" license, which is an additional cost per site. Without this license, you can still integrate using polling (checking for changes on a schedule).
SuperOffice API Best Practices
- Use the
/api/v1/{Entity}/defaultendpoint to get correctly initialized entities before creating - Store external IDs using SuperOffice's foreign keys feature
- Use duplicate detection endpoints before creating new records
Getting Started
- Generate Propstreet API credentials in your account settings (requires login)
- Set up API access in SuperOffice and configure OAuth
- Review SuperOffice's REST API documentation
- Set up your integration layer to sync data between SuperOffice and Propstreet
- If using real-time sync, configure SuperOffice Webhooks (requires Development Tools license)
You're responsible for building and maintaining the integration.
Frequently Asked Questions
How do I authenticate with SuperOffice?
SuperOffice uses OAuth 2.0 for authentication. Register your application in the SuperOffice Developer Portal, configure redirect URIs, and implement the standard OAuth flow.
Do I need a special license for webhooks?
Yes. SuperOffice webhooks require the "Development Tools" license. Without this license, you can use polling instead (checking for changes every 5-15 minutes).
How do I receive real-time updates from SuperOffice?
With the Development Tools license, register webhooks for events like person.created, person.changed, contact.created, etc. SuperOffice sends a POST to your endpoint with event details.
How do I validate SuperOffice webhook signatures?
If you configure a secret when registering the webhook, SuperOffice sends an X-SuperOffice-Signature header containing an HMAC SHA256 signature (base64 encoded) of the request body.
What's the difference between Contact and Person in SuperOffice?
SuperOffice uses non-standard terminology:
- Contact = Company/Firm (what most CRMs call "Account" or "Company")
- Person = Individual (what most CRMs call "Contact")
How often does data sync?
Sync frequency depends on how you configure your integration layer:
- Real-time: Use SuperOffice Webhooks (requires license) + Propstreet Webhooks for immediate syncs
- Scheduled: Poll both APIs on a schedule (e.g., every 15 minutes, hourly)
- Manual: Trigger syncs on-demand
How should I handle duplicates?
Use stable cross-system IDs stored in Propstreet's externalRefs and SuperOffice's foreign keys:
{
"externalRefs": [{ "namespace": "superoffice", "id": "12345" }]
}
Search by externalRefs first, then fall back to email or organization number matching. SuperOffice also provides duplicate detection endpoints you can use before creating records.
How should I handle merge conflicts?
Design your integration layer to handle conflicts. Common approaches:
- Last write wins: Use timestamps (
UpdatedDatevsupdatedUtc) to determine the most recent change - Source of truth: Designate one system as authoritative for specific fields
- Manual review: Flag conflicts for human review