Integrationsguide för Shopify
Tajo kopplar ihop Shopify med Brevo på två ställen. Tajos Shopify-app gör om Shopify-webhooks till skrivningar i Brevo när de kommer in. Synkregler, som en agent bygger och en människa godkänner, flyttar poster in i Brevo enligt ett schema. Den här sidan går igenom båda, och sedan Shopify-verktygen som Tajo tillhandahåller via MCP.
Förutsättningar
Innan du sätter igång med integrationen behöver du:
- En Shopify-butik på valfri plan (Basic, Shopify, Advanced eller Plus)
- Ett Tajo-konto (Tajo är i early access)
- Ett Brevo-konto, mottagaren för synken
- Adminåtkomst till din Shopify-butik
Steg 1: Anslut din Shopify-butik
Tajo är i early access. Shopify-appen finns inte i Shopify App Store och det finns ingen självbetjäningslänk för installation. Kontakta teamet för att komma igång. När din Tajo-arbetsyta är klar:
- Öppna Connections i Tajo.
- Ange din butiks myshopify.com-domän och välj Connect Shopify. Shopify visar de scope som Tajo begär och skickar tillbaka dig till Tajo när du godkänner dem.
- Läs vad varje scope används till, och vad Tajo skriver tillbaka till Shopify, i Shopify permissions explained.
Steg 2: Vad Tajos Shopify-app skickar till Brevo
Appen verifierar varje Shopify-webhook, sparar den, köar den och bearbetar den direkt. Kund- och produktämnen väntar först omkring fyra sekunder. Det finns inget batchfönster. Ett misslyckat jobb görs om med backoff.
Webhookämnen
Tajos Shopify-app prenumererar på de här Shopify-webhookämnena:
| Webhookämnen | Syfte |
|---|---|
customers/create, customers/update, customers/delete | Hålla Brevo-kontakter aktuella |
orders/create, orders/updated, orders/fulfilled, orders/cancelled | Orderhändelser och ordermetrik för Brevo |
orders/paid, refunds/create | Ge och dra av lojalitetspoäng |
checkouts/create, checkouts/update | Återtagning av övergivna checkouter i Brevo |
products/create, products/update, products/delete | Hålla produktkatalogen i Brevo aktuell |
inventory_levels/update | Hålla produkternas lagersaldo i Brevo aktuellt |
collections/create, collections/update, collections/delete | Hålla kollektioner aktuella |
companies/*, company_contacts/*, company_locations/* (create, update, delete) | B2B-företagssynkronisering |
app/uninstalled, app/scopes_update, app_subscriptions/update | Appens livscykel |
Shopifys obligatoriska integritetswebhooks (begäran om kunddata, radering av kunddata, radering av butiksdata) hanteras också. Appen prenumererar inte på carts/*. Övergivna varukorgar kommer från checkouts/*-ämnena.
Det här hamnar i Brevo:
| Shopify-händelse | I Brevo |
|---|---|
| Kund skapad eller uppdaterad | Kontakten skapas eller uppdateras med namn, e-post och marknadsföringssamtycke. På betalplaner lägger appen till taggar, antal ordrar, köpsumma och senaste order. |
| Kund raderad | Kontakten avprenumereras, den raderas inte |
| Order skapad, uppdaterad, betald, levererad eller annullerad | Ordern via Brevos order-API, och händelserna order_paid, order_completed och order_cancelled |
| Återbetalning skapad | Händelsen order_refunded. Om du driver ett lojalitetsprogram i Brevo via Tajo dras poäng av i proportion. |
| Order betald, med ett lojalitetsprogram i Brevo | Poäng ges enligt din takt för poäng per dollar |
| Checkout skapad eller uppdaterad, med e-post och varor | Händelserna cart_updated och cart_abandoned. Din automatisering i Brevo bestämmer när utskicket sker. |
| Produkt eller kollektion skapad, uppdaterad eller raderad | Brevos produktkatalog och kategorier |
| Lagernivå uppdaterad | Produktens lagersaldo i Brevos katalog. När en variant går från 0 till mer än 0 får varje kund som har bett om att bli meddelad en back_in_stock-händelse, en gång per påfyllning. |
Appen lägger inte till någon “Notify me”-knapp i ditt tema. En begäran om att bli meddelad när varan finns i lager igen måste komma från din butiksfront, till exempel från en knapp som du lägger till.
Befintlig data
Vid installationen importerar appen dina befintliga kunder som Brevo-kontakter. En fullständig historisk synk startas från appens synksida. På betalplaner importerar den också produkter, kollektioner, företag och ordrar.
Steg 3: Bygg en synkregel med agenten
En synkregel är en deklarativ definition av en synk: en källresurs, en Brevo-åtgärd, en fältmappning och ett filter. Du skriver den inte för hand. Du beskriver den, en agent bygger den och en människa godkänner den.
- Öppna Agents i Tajo och be Brevo Integration Architect om synken med vanliga ord. Till exempel: “Skicka Shopify-kunder som har godkänt e-postmarknadsföring till Brevo som kontakter.”
- Agenten inspekterar Shopify-connectorn. Dess urval returnerar fältnamn och typer, aldrig kundernas värden.
- Den föreslår en regel med en fältmappning och ett filter, validerar sedan fältmappningen mot Brevo-åtgärden och testkör utkastet. Inget av stegen läser kundposter.
- Den sparar regeln som ett utkast. Du kan också utgå från en mall under Connections > Syncs and mappings > New sync from template.
- Request publish approval kör en förhandsgranskning mot din butik. Den läser högst 10 poster, skriver ingenting till Brevo och flyttar inte cursorn. Den registrerar bara antal: hämtade poster, behöriga, mappade och avvisade av filtret, plus mappningsfel. Om förhandsgranskningen misslyckas skapas ingen begäran om godkännande.
- En människa godkänner begäran på sidan Approvals, med en skriftlig motivering. Godkännandet är bundet till en SHA-256-digest av regeln och går ut efter 30 minuter. Regelns sida visar sedan Publish approved version.
Om du redigerar en publicerad regel går den tillbaka till utkast. Den går igenom förhandsgranskning och godkännande igen innan den körs på nytt.
En verklig regel
Så här definierar Tajo mallen Shopify customers -> Brevo contacts:
sourceSlug: "shopify",sourceResource: "customers",destinationSlug: "brevo",destinationAction: "upsert_contact",fieldMap: [ { source: "email", destination: "email", transform: "toLowerCase" }, { source: "first_name", destination: "attributes.FIRSTNAME" }, { source: "last_name", destination: "attributes.LASTNAME" }, { source: "phone", destination: "attributes.PHONE" }, { source: "total_spent", destination: "attributes.TOTAL_SPENT", transform: "toNumber" }, { source: "orders_count", destination: "attributes.ORDERS_COUNT", transform: "toNumber" }, { source: "tajo_email_marketing_consent", destination: "attributes.OPT_IN", transform: "toBoolean" }, { source: "tags", destination: "attributes.SHOPIFY_TAGS" }, { source: "id", destination: "attributes.SHOPIFY_ID", transform: "toString" }, { source: "created_at", destination: "attributes.SHOPIFY_CREATED_AT" }, { source: "updated_at", destination: "attributes.SHOPIFY_UPDATED_AT" },],filterExpression: "($json.tajo_email_marketing_consent === true) && ($json.tajo_email_suppressed === false)",Filtret är samtyckeskontrollen. Tajo härleder båda värdena från Shopifys email_marketing_consent.state, eller den äldre flaggan accepts_marketing. En regel som skriver kontakter till Brevo kan inte publiceras utan det. Den andra Shopify-mallen, Shopify orders → Brevo orders, registrerar ordrar i Brevo för köpare som godkände marknadsföring i kassan.
När en regel körs
- Synkregler för kontakter körs som standard var 15:e minut. Varje körning börjar från regelns cursor.
- Sidan för en aktiv regel har knappen Test run (1 batch).
- En aktiv, publicerad regel av typen Shopify orders → Brevo orders körs också var 15:e minut. Den första schemalagda körningen börjar några minuter före det ögonblicket och skickar inga äldre ordrar. Varje senare körning skickar ordrarna som uppdaterats sedan den förra.
- Tidigare ordrar når Brevo bara när du själv kör regeln: med Test run (1 batch) eller genom att be agenten Sync Operator köra den.
- En orderregel körs enligt schema bara med mallens filter för köparens marknadsföringssamtycke. En regel vars filter har redigerats körs bara när du startar den.
- Efter fem misslyckade körningar i rad pausar regeln sig själv, och dess sida visar det senaste felet. Åtgärda orsaken och publicera sedan igen.
Varje körning listas i regelns körhistorik med antal lästa, skrivna och misslyckade poster, och dess tidsåtgång.
Vad Shopify-connectorn läser och skriver
Synkregler skriver bara till mottagaren, här Brevo. De skriver aldrig till Shopify.
Tajos Shopify-app begär 12 scope och gör en kort lista med skrivningar till Shopify, till exempel avregistreringar av samtycke och lojalitetstaggar. Shopify permissions explained listar varje scope och varje skrivning, med vad som utlöser den.
Agenter och MCP-värdar når butiken via Shopify-connectorn:
| Läser | Skriver |
|---|---|
| Butiksuppgifter, kunder (lista och sök), ordrar, produkter, kundmetafält, lagernivåer, status för massexport | Kundmetafält och kundtaggar, samt start av en massexport. Varje skrivning läggs upp som ett förslag och körs först när den har godkänts. |
Connectorn deklarerar också en lagerjustering. Den kräver scopet write_inventory, som Tajos Shopify-app inte begär.
Steg 4: Använd Shopify-verktygen via MCP
Tajo tillhandahåller Shopify-connectorn som en MCP-server på https://alto.tajo.io/mcp/connectors/shopify. Lägg till den i Claude Code:
claude mcp add --transport http tajo-shopify https://alto.tajo.io/mcp/connectors/shopifyVärden hittar Tajos OAuth-server och öppnar Tajos inloggning. Åtkomsten är begränsad till konton med early access. Servern exponerar 12 verktyg:
| Verktyg | Vad det gör |
|---|---|
preview_tajo_shopify_app | Interaktiv förhandsvisning av Tajos Shopify-app, renderad som MCP UI |
get_shop | Butikens uppgifter |
search_customers | Sök kunder med Shopifys frågesyntax, till exempel tag:tajo-vip eller total_spent:>100 |
list_customers | Lista kunder, paginerat |
list_orders | Lista ordrar, paginerat |
list_products | Lista produkter med varianter, bilder och lager |
get_customer_metafields | Läs en kunds metafält |
get_inventory_levels | Läs en variants lager på alla platser |
poll_bulk_export | Kontrollera en massexport och få dess nedladdningslänk när den är klar |
calculate_rewards_profile | Beräkna en kunds nivå, poäng och belöningssaldo utifrån synkad handelsdata |
shopify_propose | Lägg upp en skrivning till Shopify som ett förslag. Ingenting skickas. |
shopify_apply | Kör ett godkänt förslag |
Felsökning
- Kontakter dyker inte upp i Brevo: se contacts missing in Brevo.
- En regel som inte körs, eller som har pausat sig själv: se data not syncing.
Nästa steg
- Förstå datasynkronisering, hur synkregler beter sig
- Shopify permissions explained, varje scope och varje skrivning
- Shopify + Brevo, integrationsguiden
- Kontakta teamet för att komma igång