Sitoo

Omnium integrates with Sitoo to sync products, orders, customers, and inventory.

Overview

The Omnium–Sitoo integration enables bidirectional synchronization between Omnium Order Management System and Sitoo POS. It connects your e-commerce operations with in-store point-of-sale, providing a unified
view of orders, products, inventory, and customers.

Key capabilities:

  • Orders: Import POS sales into Omnium; export online orders to Sitoo for in-store fulfillment
  • Products: Export product catalog, variants, categories, and images to Sitoo
  • Inventory: Sync stock levels between warehouses and stores
  • Pricing: Export price lists and promotional pricing
  • Click & Collect: Support for Buy Online, Pickup In Store (BOPIS)
  • Ship from Store: Fulfill online orders from store inventory
  • Returns & Exchanges: Handle returns and exchange transactions across channels

Prerequisites

Before configuring the integration, ensure you have:

Sitoo Requirements

  • Active Sitoo account with API access enabled
  • Admin access to Sitoo admin portal to:
    • Generate API credentials
    • Configure webhooks (for real-time order sync)
    • View store/eshop IDs and warehouse IDs

Omnium Requirements

  • At least one Market set up (the integration is configured per market)
  • Warehouses configured in Omnium (if using inventory sync)
  • Product catalog imported (if exporting products to Sitoo)

Basic Setup

Omnium Connector Setup

The Sitoo integration requires connectors configured at two levels:

  1. Global connector (tenant level) — Default settings and shared configuration
  2. Market connector (per market) — Market-specific settings including authentication

Both are required. The market connector inherits from the global connector but can override settings.

Global vs Market Connector

AspectGlobal ConnectorMarket Connector
LocationTenant Settings → ConnectorsMarket → Connectors
PurposeDefault settings, shared configurationMarket-specific credentials and settings
RequiredYesYes (at least one market)
API credentialsNoYes — each market connects to its own Sitoo eshop
SettingsFeature flags, order types, defaultsEshop ID, API token, market-specific overrides

Why Both?

  • Multi-market scenarios: Each market may connect to a different Sitoo eshop or region
  • Different credentials: Each Sitoo eshop has its own API credentials
  • Setting inheritance: Common settings defined once globally, only differences at market level

Global Connector Settings (Tenant Level)

Add a connector with name sitoo under Configuration -> Settings -> Advanced -> Connectors. Click on the three dots in the top right corner to edit the JSON list of connectors and add the following:

{
    "name": "sitoo",
    "type": "pos",
    "isAuthenticatedManually": true,
    "timeOut": "00:00:00",
    "implementations": [
        "IOrderExporter"
    ],
    "properties": [
        {
            "key": "SitooOrderType",
            "value": "PosSitoo",
            "editKey": true
        }
    ],
    "customHeaders": [],
    "disableStandardErrorPolicy": false,
    "enabledForMarkets": [],
    "disabledForMarkets": []
}

The "SitooOrderType" property determines the order type for orders originating from Sitoo and should correspond to something under Configuration -> Settings -> Orders -> Order Types.

Image

Market Connector Settings (Per Market)

Under Configuration -> Settings -> Integrations -> Sitoo, select the marked to add Sitoo connector for and enable Sitoo:

Image

This will add a connector on that marked, located in the json file under market settings.

API Keys

Next, obtain your Sitoo API keys (preferably at least three) and insert them into the Sitoo integration GUI. The API-key should be in the format: base64_encode("{API ID}" + ":" + "{password}"), which is found under "Add Request Header", when you obtain the API key from Sitoo. Along with the base URL, account number, and e-shop ID (usually 1), you need to select the market corresponding to the Sitoo back office. Each Sitoo back office per market allows for product databases with different languages and currencies.

Image

Why Multiple API Keys?

Sitoo enforces rate limits per API key. Using a single API key for all operations can cause bottlenecks when:

  • Product catalog sync runs during business hours
  • Multiple order imports/exports happen simultaneously
  • Inventory updates compete with order processing

Solution: Configure separate API keys for different operation types. Each key gets its own rate limit quota from Sitoo.

Single API Key:

Multiple API Keys:

Available API Key Types

Key TypeOperations
ProductExporterProduct catalog sync to Sitoo
OrderImporterImporting POS orders from Sitoo
OrderExporterExporting online orders to Sitoo
InventoryImporterImporting stock levels
InventoryExporterExporting stock updates
EventsProcessing webhook events
ZReportFetcherFetching end-of-day reports

Json Configuration Example

{
"PropertyList": [
  {
    "Key": "AdditionalSitooApiKeys",
    "Value": "ProductExporter:cHJvZDprZXk=|OrderImporter:b3JkZXI6a2V5|InventoryExporter:aW52OmtleQ=="
  }
]
}

Format: KeyType1:Base64Token|KeyType2:Base64Token|...

Stores and Warehouses

Next, we need to connect/map the warehouses in Sitoo and Omnium. In Sitoo, warehouses is an entity seperate from stores, while in Omnium, all warehouse is a store. In the Sitoo integration GUI, there is a panel you can use. However, it is still under development and often not sufficient.

Image

The connection between warehouses should be both ways, with an external ID in Omnium with key "SitooWarehouseId": ../_images/sitoo-store-ids.png

And an external ID in Sitoo:

Image

In addition, we need to specify in Omnium the Sitoo warehouse type using a property with the key "SitooWarehouseType":

Image

We recommend using virtual, as Omnium is the master of stock levels. See https://developer.sitoo.com/guides/stores-and-warehouses#warehouses.

With the warehouses being one to one between Sitoo and Omnium, the next step is stores in Sitoo. These need to have their external Id set to the Id of the corresponding store in Omnium:

Image

The store's external ID is used by the integration to set the correct store on the order. This value is not used for stockkeeping, but it is still crucial to set it correctly.

In Omnium, ensure the store's external ID matches the corresponding store in Sitoo. This external ID is used by the integration to assign the correct store to the order.

Events

Sitoo uses webhooks to notify Omnium about changes in real-time. When an event occurs in Sitoo (e.g., a new order is placed at the POS), Sitoo sends a POST request to the configured webhook URL, and Omnium processes the event accordingly.

Event Types

Event TypeTriggerOmnium Action
orderNew POS order created or updatedImport order into Omnium
order-deliveryOrder delivery status changesUpdate order fulfillment status
warehouse-transactionStock movement in Sitoo warehouseSync inventory levels

Configuring the Webhook

To register Omnium as an event subscriber, navigate to Settings -> Event Subscription in the Sitoo back office and add the following configuration:

{
    "event_subscriptions": [
        {
            "base_url": "https://api.omnium.no/api/sitoowebhook/{TenantId}/{MarketId}/",
            "api_token": "{api_token}",
            "event_types": [
                "order",
                "order-delivery",
                "warehouse-transaction"
            ]
        }
    ]
}
PlaceholderDescriptionExample
{TenantId}Your Omnium tenant identifierMyShop
{MarketId}The market code for this integrationNOR, SWE
api_tokenShared secret for webhook auth(generate one)

The api_token in Sitoo must match the WebhookApiKey property in the Sitoo connector settings in Omnium:

{
    "Key": "WebhookApiKey",
    "Value": "{api-token}"
}

After configuration, you can verify the webhook is working by:

  1. Creating a test order in Sitoo POS
  2. Checking that the order appears in Omnium within a few seconds

Additional Documentation

Sitoo documentation: Sitoo Developer Guide