Developer Experience

Powerful Tools for Complete Customization

Simplica.io provides a comprehensive developer toolkit including custom hooks, background jobs, data migration tools, and custom tables — all designed for per-tenant customization at scale.

SyncHooks System

Custom Data Transformation Hooks

SyncHooks allow each tenant to customize how data flows through the system. Write C# code that transforms data during synchronization — perfect for custom commission logic, product mapping, and customer enrichment.

10+ Built-in Hooks
Custom C# Code
Isolated Execution
Hot Reload

Available Hook Types

  • BeforeCommissionCalculation — Custom commission rules
  • ShopifyCreateCustomer — Transform Shopify customer data
  • ExigoCreateCustomerFromInternal — Map to Exigo format
  • BeforeEnrollerAssignment — Custom enroller logic
  • BeforeSponsorAssignment — Custom sponsor placement
  • OrderCreatedMapping — Transform order data on sync
  • ProductMappingHook — Custom product field mapping
BeforeCommissionCalculation.cs
csharp
// Custom hook: BeforeCommissionCalculation.cs
public class BeforeCommissionCalculation : IDataHook<CommissionInput, CommissionOutput>
{
    public async Task<HookResult<CommissionOutput>?> ExecuteAsync(
        HookContext<CommissionInput> context)
    {
        var input = context.SourceData;
        
        // Custom commission logic for this tenant
        var rate = input.CustomerType == "VIP" ? 0.15 : 0.10;
        var bonus = input.OrderTotal > 1000 ? 50 : 0;
        
        return HookResult<CommissionOutput>.Success(new CommissionOutput
        {
            CommissionRate = rate,
            BonusAmount = bonus,
            Notes = "Applied custom VIP rates"
        });
    }
}

How It Works

  1. 1.Tenant creates hook code in their GitHub repo
  2. 2.Code is compiled and deployed to gRPC service
  3. 3.Hooks execute in isolated context during data sync
  4. 4.Results transform data before it reaches destination
DailyInventorySync.cs
csharp
// Custom job: DailyInventorySync.cs
[Job(
    Name = "DailyInventorySync",
    Description = "Syncs inventory levels with Shopify",
    Platform = "shopify",
    ScheduleType = JobScheduleType.Recurring,
    CronExpression = "0 2 * * *", // 2 AM daily
    Timeout = "00:30:00"
)]
public class DailyInventorySync : ITenantJob
{
    public async Task<JobResult> ExecuteAsync(
        JobContext context, 
        CancellationToken ct)
    {
        var db = context.GetDatabaseService();
        var logger = context.Logger;
        
        // Fetch products needing sync
        var products = await db.QueryAsync<Product>(
            "SELECT * FROM Products WHERE NeedsSync = true");
        
        foreach (var product in products)
        {
            await SyncToShopify(product);
            await context.ReportProgressAsync(++processed, total);
        }
        
        return JobResult.Success(new { Synced = processed });
    }
}
Manual Trigger
Run on-demand via API or UI
Cron Scheduling
Flexible recurring schedules
Checkpoint Resume
Continue from last position
Auto Retry
Exponential backoff on failure
Tenant Jobs

Custom Background Job Execution

Define custom background jobs per tenant with full control over scheduling, execution, and monitoring. Perfect for inventory syncs, report generation, commission calculations, and data cleanup tasks.

Job Capabilities

  • Cron-based scheduling (daily, weekly, monthly, custom)
  • On-demand execution via REST API or admin UI
  • Real-time progress reporting and monitoring
  • Checkpoint-based resume after failures
  • Platform-specific jobs (Shopify, Exigo, etc.)
  • Per-store execution for multi-store tenants
  • Configurable timeouts and retry policies
  • Email/Slack notifications on failure
Migration Engine

Seamless Platform Migrations

Our powerful migration engine makes switching platforms painless. Import customers, orders, products, and more from any supported source with intelligent matching, conflict resolution, and complete audit trails.

Bi-Directional Sync

Import data from external systems or export to third parties. Support for live API, staging tables, and file imports.

Conflict Resolution

Intelligent matching by email, external ID, or custom fields. Configurable create/update/skip policies per entity type.

Workflow Control

Full control over post-migration workflows. Skip webhooks, disable triggers, or run full processing pipeline.

Supported Source Systems

S
Shopify
E
Exigo
W
WooCommerce
B
BigCommerce
P
Pillars
T
Tripletex
C
CSV/Excel
C
Custom API

Migration Modes

Dry Run
Preview what would be migrated without making changes
Sample
Migrate a small batch to validate mapping and hooks
Full
Complete migration with progress tracking
migration-config.json
json
// Migration configuration example
{
  "name": "Exigo to Simplica.io Migration",
  "direction": "Import",
  "source": {
    "integrationId": "exigo",
    "dataSource": { "type": "LiveApi" }
  },
  "entities": [
    {
      "entityType": "Customer",
      "priority": 1,
      "resolution": {
        "strategy": "MatchByEmail",
        "fallbackStrategy": "Create"
      },
      "options": {
        "createNew": true,
        "updateExisting": true
      }
    },
    {
      "entityType": "Order",
      "priority": 2,
      "resolution": {
        "strategy": "MatchByExternalId"
      }
    }
  ],
  "execution": {
    "mode": "Full",
    "batchSize": 100,
    "parallelism": 4
  },
  "workflowControl": {
    "triggerOrderWorkflows": false,
    "skipWebhooks": true
  }
}
Custom Tables

Extend Your Data Model

Create custom database tables directly from the admin UI. Perfect for storing tenant-specific data that doesn't fit the standard schema — integration mappings, custom metrics, staging data for migrations, and more.

Use Cases

  • Cross-platform ID mapping tables
  • Custom metrics and KPI tracking
  • Staging tables for data migrations
  • Integration-specific configuration storage
  • Audit logs and history tracking
  • Custom reporting data aggregations
  • Temporary data processing buffers

Access from Hooks & Jobs

Custom tables are fully accessible from SyncHooks and Tenant Jobs via theICustomTableDatabaseServiceinterface. Query, insert, update, and delete records with full LINQ support.

Create and manage custom database tables from the admin UI

Custom Tables Management

Tables per Tenant
15+
Column Types

Developer Tooling

Complete CLI and development tools for efficient local development and deployment.

Simplica CLI

Full-featured CLI for local development, database migrations, tenant management, and deployment automation.

Local Development

Run the complete stack locally with Docker Compose. Hot reload for hooks and jobs during development.

API-First Design

Complete REST API with OpenAPI documentation. Every feature accessible programmatically.

Kubernetes Native

Production-ready Kubernetes manifests. Horizontal scaling, rolling deployments, and health checks.

Debugging Tools

Built-in logging, tracing, and debugging. View hook execution logs and job progress in real-time.

Plugin Architecture

Modular plugin system for hooks and jobs. Share common code across multiple tenants.

Built for Enterprise Scale

The Simplica.io platform is designed to handle complex multi-tenant scenarios with the flexibility developers need and the reliability enterprises demand.