---
title: "Shopify Connector"
description: "Implementation notes for building and operating the Shopify connector in Tajo."
url: https://tajo.io/docs/connectors/shopify/
markdown: https://tajo.io/docs/connectors/shopify.md
lang: en-US
robots: noindex
---

# Shopify Connector

Connector status: In progress Being built. Not verified yet.

| Source field | Destination field | Sample value |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Connector implementation

## Build the Shopify integration

E-commerce platform for online stores, inventory, orders, and customer management

E-commerce

*Shopify connector flow from source system to Tajo mapping and Brevo activation.*

## Implementation Overview

**Build target**

Implement a Shopify connector that authenticates to the vendor surface, normalizes source records in Tajo, and activates eligible data in Brevo.

**Current status**

Treat this as an implementation guide. Build and validate the auth, mapping, sync, and operations paths before production use.

**Primary surface**

shopify.dev/docs/apps/build/devmcp

| Property | Value |
| --- | --- |
| Integration surface | MCP |
| Status | In progress |
| Category | E-commerce |
| Setup complexity | medium |
| Vendor documentation | [shopify.dev/docs/apps/build/devmcp](https://shopify.dev/docs/apps/build/devmcp) |
| Allowed host | Not recorded |
| Base URL | Not recorded |
| OpenAPI schema | Not recorded |
| MCP server | Not recorded |
| Last researched | 2026-08-07 |

Admin API is GraphQL; official Dev MCP + Storefront MCP. The Storefront MCP is per-store (https://{shop}.myshopify.com/api/mcp) and the Dev MCP is a local stdio server, so neither is a fixed endpoint this catalog can hold.

## Authentication

- Keep [shopify.dev/docs/apps/build/devmcp](https://shopify.dev/docs/apps/build/devmcp) linked from the connector runbook so operators can confirm vendor behavior during incidents.
- Store credentials per Tajo workspace and keep tenant-specific secrets out of connector configuration files.
- Add a credential smoke test that verifies read access to a harmless resource before running backfills or enabling webhooks.

## Data To Sync

Start with these inferred data domains, then confirm exact vendor resources and permissions from the source documentation:

- Contact and identity records
- Commerce, payment, or subscription objects

The connector should make source records idempotent by keeping a stable key such as a vendor object ID, email address, event ID, ticket ID, order ID, or campaign ID. If the vendor only exposes list APIs, Tajo should store the cursor strategy and replay policy explicitly.

## Sync Shape

| Resource | Direction | Conflict handling |
| --- | --- | --- |
| `customers` | bidirectional | source\_wins, loop guard origin\_tag |
| `orders` | inbound | n/a |

Shopify owns customer identity; Tajo only writes back computed tags and metafields, so a conflict resolves to the store. The loop guard is implemented — update\_customer\_tags and set\_customer\_metafields declare echoTarget, and the webhook route consumes the marker before dispatch.

## Mapping To Tajo/Brevo

Shopify has a typed contract, and every resource on it is read for context rather than projected into Brevo. That is a recorded decision, not a gap: no field of this connector currently becomes a Brevo contact, list, or event.

The conventions that apply to every connector — stable external IDs, normalization, backfill and sync strategy, error handling, and the builder checklist — are documented once under “Applies to every connector” on the [connector catalog](https://tajo.io/docs/connectors).

## Sources

- [Vendor documentation](https://shopify.dev/docs/apps/build/devmcp)
- [apps.shopify.com/mcp](https://apps.shopify.com/mcp)
- [shopify.dev/docs/apps/build/storefront-mcp](https://shopify.dev/docs/apps/build/storefront-mcp)
