Magento Connector Guide

The Magento connector enables Tealfabric workflows to integrate directly with Adobe Commerce and Magento REST APIs for catalog and order automation. It is designed for operational use cases where product data, order state, and customer records need to stay synchronized across systems.

Document information
FieldValue
Canonical URL/docs/04_connecting-systems/connectors/m/magento
Version (published date)2026-05-08
Tagsconnectors, reference, magento
Connector IDmagento-1.0.0

Magento connector workflow showing token-authenticated API access, product writes, filtered order retrieval, and downstream workflow decisions based on commerce state.

When to use this connector

Use this connector when workflows need to create or update products, query orders, or synchronize customer-related records from Magento. It is especially useful for commerce operations where inventory and fulfillment steps depend on up-to-date store data. The connector performs best when endpoint usage is standardized by environment and store view.

Prerequisites

Before configuring the integration, create a Magento integration token with the minimum permissions required for your workflow. Confirm the base_url points to the right Magento instance and ensure your target store view is available for the endpoints you call. Establish deployment rules for token rotation and audit logging before production rollout.

Configuration

Store these settings in the integration profile:

  • token (required): Magento bearer token (integration token recommended).
  • base_url (required): Magento API host URL, including protocol.
  • timeout_seconds (optional): Request timeout in seconds, default 30.

Create products with send

Use send for write operations such as creating and updating product records. Keep product payloads schema-aligned to prevent catalog validation errors and reduce reconciliation work later.

const baseUrl = "https://api.example.com/api/v1";
const tenantId = "<TENANT_ID>";
const apiKey = "<API_KEY>";

type MagentoProductResult = {
  id?: number;
  sku?: string;
  name?: string;
  price?: number;
};

async function createProduct(integrationId: string): Promise<MagentoProductResult> {
  const response = await fetch(
    `${baseUrl}/integrations/${encodeURIComponent(integrationId)}/execute`,
    {
      method: "POST",
      headers: {
        "X-API-Key": apiKey,
        "X-Tenant-ID": tenantId,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        operation: "send",
        endpoint: "rest/default/V1/products",
        method: "POST",
        data: {
          product: {
            sku: "sku-20260508-001",
            name: "Tealfabric Hoodie",
            type_id: "simple",
            price: 69.0,
            attribute_set_id: 4,
            status: 1,
            visibility: 4,
            weight: 0.8,
          },
        },
      }),
    }
  );
  if (!response.ok) throw new Error(`Request failed: ${response.status}`);
  const payload = (await response.json()) as { data?: MagentoProductResult };
  if (!payload.data) throw new Error("Missing Magento product payload");
  return payload.data;
}
curl -X POST "https://api.example.com/api/v1/integrations/<ENTITY_ID>/execute" \
  -H "X-API-Key: <API_KEY>" \
  -H "X-Tenant-ID: <TENANT_ID>" \
  -H "Content-Type: application/json" \
  -d '{
    "operation": "send",
    "endpoint": "rest/default/V1/products",
    "method": "POST",
    "data": {
      "product": {
        "sku": "sku-20260508-001",
        "name": "Tealfabric Hoodie",
        "type_id": "simple",
        "price": 69.0,
        "attribute_set_id": 4,
        "status": 1,
        "visibility": 4
      }
    }
  }'
{
  "success": true,
  "data": {
    "id": 4021,
    "sku": "sku-20260508-001",
    "name": "Tealfabric Hoodie",
    "price": 69
  }
}

Retrieve orders with receive

Use receive for order and fulfillment visibility, especially when downstream systems need processing-state updates. Apply searchCriteria filters to keep responses focused and cost-effective.

const baseUrl = "https://api.example.com/api/v1";
const tenantId = "<TENANT_ID>";
const apiKey = "<API_KEY>";

type MagentoOrder = {
  entity_id?: number;
  increment_id?: string;
  status?: string;
  grand_total?: number;
};

async function listProcessingOrders(integrationId: string): Promise<MagentoOrder[]> {
  const response = await fetch(
    `${baseUrl}/integrations/${encodeURIComponent(integrationId)}/execute`,
    {
      method: "POST",
      headers: {
        "X-API-Key": apiKey,
        "X-Tenant-ID": tenantId,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        operation: "receive",
        endpoint: "rest/default/V1/orders",
        query: {
          "searchCriteria[filterGroups][0][filters][0][field]": "status",
          "searchCriteria[filterGroups][0][filters][0][value]": "processing",
          "searchCriteria[pageSize]": 20,
          "searchCriteria[currentPage]": 1,
        },
      }),
    }
  );
  if (!response.ok) throw new Error(`Request failed: ${response.status}`);
  const payload = (await response.json()) as { data?: MagentoOrder[] };
  if (!payload.data) throw new Error("Missing Magento order payload");
  return payload.data;
}
curl -X POST "https://api.example.com/api/v1/integrations/<ENTITY_ID>/execute" \
  -H "X-API-Key: <API_KEY>" \
  -H "X-Tenant-ID: <TENANT_ID>" \
  -H "Content-Type: application/json" \
  -d '{
    "operation": "receive",
    "endpoint": "rest/default/V1/orders",
    "query": {
      "searchCriteria[filterGroups][0][filters][0][field]": "status",
      "searchCriteria[filterGroups][0][filters][0][value]": "processing",
      "searchCriteria[pageSize]": 20,
      "searchCriteria[currentPage]": 1
    }
  }'
{
  "success": true,
  "data": [
    {
      "entity_id": 9012,
      "increment_id": "000000912",
      "status": "processing",
      "grand_total": 138
    }
  ],
  "total_size": 1
}

Reliability guidance

Prefer integration tokens over temporary admin tokens for stable automation and clearer permission boundaries. Use pagination and search filters for large catalogs and order sets to avoid oversized responses. For high-volume workflows, combine idempotent updates with retry backoff to handle transient API or network failures safely.

Related references