xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField Sales & SFACRMRewardsClaimsInventoryProcurementWarehouse ManagementField ServiceServiceSupportTelephony & MessagingFinance & AccountingPayrollExpense ManagementCommercePortalsAnalytics & ReportingData StudioMobile AppSee all products →
PLATFORM
Platform overviewApp BuilderAutomationIntegrationsSecurity & GovernanceChange ManagementDevelopers
SENSE AI
Sense AI overviewSense AssistSense ControlSense VisionAI StudioTrust & governanceIn Claude & ChatGPTUse cases
SOLUTIONS
Auto DMSConsumer Goods DMSSales Force Automation (SFA) FMCG & DistributionManufacturing & Dealer NetworksAutomotive & DealershipsPharma & HealthcareConsumer DurablesAgri-InputsBuilding MaterialsService NetworksWarehousing & 3PLFinancial AccountingERP SoftwareIndia GST ComplianceUAE VAT & e-InvoicingSaudi ZATCA & VATAll solutions →
RESOURCES
Knowledge CenterDeveloper & CLIBlogGuidesWhat is xMatix?Company facts
COMPANY
AboutCareersPartnersEventsContactAuthorsLegal
Sign in Request demo
Home/Docs/Integrations
OVERVIEW · Last reviewed

Integrating xMatix with other systems

xMatix exchanges data with other systems through integration apps — named containers that hold everything one integration needs (connections, credentials, entity bindings, flows, triggers, run history and access) — and, for standing two-way synchronization, through sync profiles that build those flows for you. Both are administered from Setup → Platform, and both report into the same monitoring screens.

An integration usually sits between a business process in xMatix and a system of record somewhere else: orders flowing out to a storefront, customers flowing in from a CRM, vouchers flowing to accounting. This page explains the building blocks, the order to set them up in, who may do what, and where to look when something stops. The step-by-step build of one integration is on Connect an external system.

Overview

Building blockWhat it isWhere you manage it
Integration appThe unit of ownership. It holds every other building block and can be switched off as a wholeSetup → Platform → Integrations
ConnectionA configured connector — which system, which endpoint, which credentialsThe app's Connections page
SecretA write-only credential (password, token, key) that connections refer to by nameThe app's Secrets page
Entity bindingWhich xMatix entity the app touches, in which direction, and with which write modeThe app's Entity Bindings page
FlowA small step graph that reads, transforms and writes records for one binding and directionThe app's Flows page
TriggerWhat starts a flow: a schedule, a poll, an inbound webhook, a record change and moreThe app's Triggers page
RunOne execution of a flow, with its steps, items and errorsThe app's Overview and Errors pages
Sync profileA declarative "keep these entities in step with that system" contract that compiles into flowsSetup → Platform → Sync profiles

When to use it

  • One-off or occasional loads from a file: use Import data, not an integration.
  • Push a record to another system when it changes, or pull records on a schedule: build an integration app with a flow and a trigger. Outbound integration describes the push patterns.
  • Keep the same records in step on both sides over time, with change detection and conflict handling: create a sync profile.
  • Let another system call xMatix: give it a webhook flow on an integration app, or a client credential for the data API — see Credentials and rotation.

How xMatix handles it

Connectors

Every connection uses a connector — the component that speaks the other system's protocol. When you create a connection, the Connector Type list offers:

ConnectorWhat it reaches
HTTP RESTAny JSON-over-HTTPS API
Salesforce RESTSalesforce, including bulk writes and live schema discovery — see Salesforce
Zoho Books, Zoho Payroll, Zoho PeopleThe three Zoho products, each with its own credentials and organization — see Zoho
SFTPFile transfer to and from an SFTP server
Azure Service BusMessage queues and topics
Azure Blob (tenant storage)Files in your organization's own integration storage area (CSV, delimited and Excel files)
Web site (browser)Websites that have no API, driven step by step through a browser; these runs appear on the app's Browser jobs page
Catalog connectorsClearTax GSP, HubSpot, Shopify and Zendesk, delivered as reviewed configuration on the shared REST engine — see Catalog connectors

Tally is integrated differently — through a sync site that pushes data to xMatix — and is described on Tally.

Bindings, flows and triggers

An entity binding names the xMatix entity (optionally narrowed to a view), the Direction (Inbound, Outbound or Bidirectional) and the Write Mode (Create, Update or Upsert). Under Governance & staging it can also require operator approval before inbound data is committed, or park inbound rows in a staging table for review first. Those choices are what fill the app's Approvals and Staging pages.

A flow attaches a binding to a direction and a slug; its versions carry the step graph, and only the active version runs. A trigger starts it. The trigger types are Schedule (cron), Poll (cron-driven connector read), Webhook (inbound HTTP), Entity Event (record created, changed or removed), Data Lake Event and Manual.

Runs and their statuses

Each execution is a run. Runs move through Pending, Running, PendingApproval, Approved, Rejected, Succeeded, Failed and DeadLettered. The app's Overview lists recent runs; Errors shows the same history filtered to Failed and DeadLettered.

The app as a switch

An app's Active setting is checked for every dispatch — schedules, polls, webhooks, record events, replays and queued work alike. While the app is inactive, its scheduled triggers are skipped and any other dispatch is refused with "Integration app is disabled. Re-enable the app to resume its flows." Nothing is deleted, so switching it back on resumes work.

Who the flows run as

Every flow of an app reads and writes xMatix as the app's Run as user, so that user's security profiles limit what the flows can touch. Left empty, flows run as the System Process user, which has no security profiles — any write to a secured entity is then denied.

Sync profiles

A sync profile declares the external system, the connection, the entities in scope with a direction for each, and the field mappings, then compiles into flows on its integration app. The engine keeps a watermark per entity and direction, pairs records in a ledger so they are updated rather than duplicated, ignores unchanged re-reads, and opens a conflict rather than guessing when both sides changed the same field. See Scheduled sync and Sync health and conflicts.

Prerequisites

  • Your security profile has the Manage integrations capability (granted on the profile's Entitlements tab). Without it the Integrations and Sync profiles entries are hidden in Setup.
  • You know the external system's address, the credentials xMatix will use, and which xMatix entities are in scope and in which direction.
  • An active user exists to act as the app's Run as user, with security profiles that allow exactly the reads and writes the integration needs.

Procedure

Step 1 — Create the integration app

  1. Go to Setup → Platform → Integrations. The Integration apps list shows every app with its status, counts of connections, bindings, flows and triggers, pending approvals and the last run.
  2. Select New, enter a Name and select Create.

Empty integration apps list with the New button at the top right of the page header

The screenshot shows an empty list in an earlier Setup menu, where Integrations sat under Process Studio; today it is under Platform.

The app is created Active, receives a Public ID, and your security profiles — plus the built-in SystemAdmin profile — are given the Admin role on it.

Step 2 — Set the run-as user

  1. Open the app and select Edit.
  2. Pick the Run as user and select Save. The user must be active; an inactive user is refused.

In a sandbox the dialog also shows Allow sandbox execution. Leave it off until the app's connections and secrets point at sandbox-tier systems: until it is on, the sandbox refuses the app's flows.

Step 3 — Grant access

  1. Open the app's Members page.
  2. Add each security profile that needs access and choose its Role (see Permissions).

Step 4 — Connect, bind, build and trigger

Store credentials on Secrets, create and test the connection on Connections, bind the entity on Entity Bindings, build and activate the flow on Flows, and add a trigger on Triggers. Connect an external system walks through each of these.

Step 5 — Watch the first runs

Open the app's Overview to see recent runs, and Errors for failures. Decide parked runs on Approvals and review staged rows on Staging. For sync profiles, use Setup → Platform → Monitoring → Sync Monitor.

Step 6 — Pause or retire an integration

  • To pause everything the app does, select Edit, turn Active off and Save.
  • To remove it, use Delete App in the list's actions column. This permanently removes the app with all of its connections, bindings, flows, triggers, runs, secrets and role assignments, and cannot be undone.

Fields

The integration app dialog. On a new app only Name is shown; the other fields appear when you edit a saved app.

FieldWhat it meansNotes
NameThe app's name in lists and menusRequired. Keep secrets and personal names out of it
ActiveWhether the app's flows may runOn when the app is created. Off refuses every dispatch without deleting anything
Allow sandbox executionLets a sandbox tenant's flows call the systems this app connects toShown only in a sandbox. Off by default
Run as userThe xMatix user every flow of this app acts asOptional. Empty means the System Process user, which has no security profiles
Public IDThe app's public identifier, used in its inbound webhook addressesRead-only; shown in the list and the app's header

Business rules

  • Creating an app grants the Admin role to the creator's security profiles and to the SystemAdmin profile, so a new app is never unreachable.
  • Roles are cumulative: each role includes everything the roles below it allow.
  • An inactive app's flows are refused on every path — scheduled, polled, webhook, record event, replay or queued.
  • Secrets are write-only: once saved they are never shown again, only replaced.
  • Sandbox copies do not carry integration secrets, and a sandbox refuses an app's flows until Allow sandbox execution is on for it.
  • Deleting an app deletes everything it holds, including run history.

Example

A distributor wants web-shop orders in xMatix and stock levels back on the shop.

  1. The administrator creates the app "Web shop" and sets Run as user to a dedicated integration user whose profile may create Orders and read Items.
  2. On Members they give the operations team's profile the Operator role and the IT profile the Connection Manager role.
  3. IT stores the shop's API token on Secrets, creates a connection with the shop's catalog connector and selects Test Connection.
  4. Two bindings follow: Order, Inbound, Upsert, with Require operator approval before commit on for the first weeks; and Item, Outbound, Update.
  5. A Poll trigger reads new orders every 15 minutes, and an Entity Event trigger pushes an item when it changes.
  6. The first morning, the operations team approves the parked order runs on Approvals. When the shop announces maintenance, they turn the app's Active setting off for the evening and back on afterwards.

Training

Practice exercise

In a sandbox, create an integration app called "Practice app", open it and confirm that the Members page lists your own security profile and SystemAdmin with the Admin role. Edit the app, turn Active off and save. Expected result: the list shows the app as Inactive, and its header Status reads Inactive. Delete the app afterwards.

Quick reference

  • Integrations and Sync profiles live under Setup → Platform.
  • One app per external system or integration product; everything else lives inside it.
  • Connection → binding → flow → trigger is the build order.
  • Active off pauses everything; Delete App removes everything.
  • Set a Run as user, or secured writes are denied.
  • Viewer reads, Operator runs and approves, Connection Manager adds connections, Admin does the rest.
  • Failures: the app's Errors page; sync profiles: Sync Monitor.

Permissions

Two gates stack.

  1. The Manage integrations capability shows the Integrations and Sync profiles screens and lets a user create apps and list them all.
  2. App roles, granted to security profiles on each app's Members page, decide what a user can do inside an app:
RoleWhat it adds
ViewerOpen the app and read its runs, errors, approvals and members
OperatorReplay and cancel runs, decide approvals and answer browser-job prompts
Connection ManagerCreate, edit, test and delete connections
AdminEdit or delete the app, manage secrets, bindings, flows, triggers (including Fire now) and members

A user who has the capability but no role on an app can see it in the list, but opening it shows "You don't have access to this integration app". Sync profiles and the Sync Monitor are governed by the capability alone; app roles do not apply to them. See Security profiles.

Configuration

SettingWhereWhat changing it affects
Manage integrations capabilitySetup → Access control → security profile → EntitlementsWho can see the integration screens at all
App rolesThe app's Members pageWhat each security profile can do inside one app
ActiveThe app's Edit dialogPauses or resumes every flow of the app
Run as userThe app's Edit dialogWhich records the app's flows can read and write
Allow sandbox executionThe app's Edit dialog, sandboxes onlyWhether the sandbox may call the app's external systems
SecretsThe app's Secrets pageThe credentials connections use; replacing one rotates it — see Credentials and rotation
Approval and stagingEach binding's Governance & staging sectionWhether inbound data waits for review before it is written
TriggersThe app's Triggers pageWhen and how often flows run
Sync profilesSetup → Platform → Sync profilesStanding synchronization, its schedule and its mappings

Common problems

"You don't have access to this integration app"

Your security profile has no role on the app. Ask an app Admin to add your profile on the app's Members page with at least the Viewer role.

Every run of one app fails with "Integration app is disabled"

The app's Active setting is off. Open the app, select Edit, turn Active on and Save. Replay the runs that failed while it was off if they still matter.

Flows fail when writing records, but the connection test passes

The app has no Run as user, or that user's security profiles do not allow the write. Set a run-as user whose profiles cover the entities the flows touch.

Nothing runs in a sandbox

Flows in a sandbox are refused until Allow sandbox execution is on for the app, and secrets are not copied into a sandbox. Point the connections at sandbox-tier systems, add the secrets again, then turn the setting on.

The Integrations entry is missing from Setup

Your security profile lacks the Manage integrations capability. Ask an administrator to grant it on the profile's Entitlements tab.

More symptoms and fixes: Troubleshooting integrations.

Common questions

Do I need a developer to set up an integration?

Not for the common paths. Creating an app, storing credentials, testing a connection, binding an entity, declaring a sync profile and mapping fields are all done on administration screens, and sync profiles generate their flows for you. Technical comfort helps when a flow needs custom transformation steps or when you call an unusual API through the generic HTTP REST connector. The developer documentation covers the programmatic surface, including the data API and client credentials for systems that call xMatix.

Which external systems are supported out of the box?

Named connectors ship for Salesforce, Zoho Books, Zoho Payroll, Zoho People, ClearTax GSP, HubSpot, Shopify and Zendesk, and Tally is connected through its own sync site. Beyond those, the HTTP REST connector reaches any JSON-over-HTTPS API, SFTP and Azure Service Bus cover file and queue transports, and the Web site (browser) connector works with sites that have no API. See Catalog connectors for what a catalog connector provides.

What is the difference between an import and a sync?

An import is a one-time, file-based load you run and review. A sync profile is standing configuration: it runs on a schedule, detects what changed on each side since the last pass, writes only the differences, and keeps a per-record ledger so the same record is updated rather than duplicated on every cycle.

Should I pause an integration or delete it?

Pause it. Turning Active off stops every flow of the app while keeping its connections, secrets, history and access intact, and turning it back on resumes work. Delete only an integration you will never use again: deleting removes all of its configuration and run history permanently.