Guide til Shopify-integration
Tajo forbinder Shopify med Brevo to steder. Tajos Shopify-app omsætter Shopify-webhooks til skrivninger i Brevo, efterhånden som de kommer ind. Synkroniseringsregler, som en agent bygger og en person godkender, flytter poster til Brevo efter en tidsplan. Denne side gennemgår begge dele og derefter de Shopify-værktøjer, Tajo stiller til rådighed via MCP.
Forudsætninger
Før du går i gang med integrationen, skal du have:
- En Shopify-butik på et vilkårligt abonnement (Basic, Shopify, Advanced eller Plus)
- En Tajo-konto (Tajo er i early access)
- En Brevo-konto, som er destinationen for synkroniseringen
- Administratoradgang til din Shopify-butik
Trin 1: Forbind din Shopify-butik
Tajo er i early access. Shopify-appen er ikke opført i Shopify App Store, og der er intet selvbetjent installationslink. Kontakt teamet for at komme i gang. Når dit Tajo-workspace er klar:
- Åbn Connections i Tajo.
- Indtast din butiks myshopify.com-domæne, og vælg Connect Shopify. Shopify viser de scopes, Tajo anmoder om, og sender dig tilbage til Tajo, når du godkender dem.
- Se, hvad hvert scope bruges til, og hvad Tajo skriver tilbage til Shopify, i Shopify-tilladelser forklaret.
Trin 2: Det sender Tajos Shopify-app til Brevo
Appen verificerer hver Shopify-webhook, gemmer den, sætter den i kø og behandler den med det samme. Kunde- og produktemner venter cirka fire sekunder først. Der er intet batchvindue. Et job, der fejler, prøves igen med backoff.
Webhook-emner
Tajos Shopify-app abonnerer på disse Shopify-webhook-emner:
| Webhook-emner | Formål |
|---|---|
customers/create, customers/update, customers/delete | Hold Brevo-kontakter opdaterede |
orders/create, orders/updated, orders/fulfilled, orders/cancelled | Ordrehændelser og ordremetrikker til Brevo |
orders/paid, refunds/create | Tildel og træk loyalitetspoint |
checkouts/create, checkouts/update | Genindfangning af forladte checkouts i Brevo |
products/create, products/update, products/delete | Hold produktkataloget i Brevo opdateret |
inventory_levels/update | Hold produktlageret i Brevo opdateret |
collections/create, collections/update, collections/delete | Hold kollektioner opdaterede |
companies/*, company_contacts/*, company_locations/* (create, update, delete) | B2B-virksomhedssynkronisering |
app/uninstalled, app/scopes_update, app_subscriptions/update | Appens livscyklus |
Shopifys obligatoriske privatlivs-webhooks (anmodning om kundedata, sletning af kundedata, sletning af butiksdata) håndteres også. Appen abonnerer ikke på carts/*. Forladte kurve kommer fra checkouts/*-emnerne.
Det lander i Brevo:
| Shopify-hændelse | I Brevo |
|---|---|
| Kunde oprettet eller opdateret | Kontakten oprettes eller opdateres med navn, e-mail og marketingsamtykke. På betalte abonnementer tilføjer appen tags, antal ordrer, forbrugt beløb og seneste ordre. |
| Kunde slettet | Kontakten afmeldes, men slettes ikke |
| Ordre oprettet, opdateret, betalt, leveret eller annulleret | Ordren via Brevos orders-API samt hændelserne order_paid, order_completed og order_cancelled |
| Refusion oprettet | Hændelsen order_refunded. Kører du et Brevo-loyalitetsprogram via Tajo, trækkes point forholdsmæssigt. |
| Ordre betalt, med et Brevo-loyalitetsprogram | Point tildeles efter din sats for point pr. dollar |
| Checkout oprettet eller opdateret, med en e-mail og varer | Hændelserne cart_updated og cart_abandoned. Din Brevo-automatisering bestemmer, hvornår der sendes. |
| Produkt eller kollektion oprettet, opdateret eller slettet | Brevos produktkatalog og kategorier |
| Lagerniveau opdateret | Produktets lager i Brevos katalog. Når en variant går fra 0 til over 0, får hver kunde, der har bedt om besked, en back_in_stock-hændelse, én gang pr. genopfyldning. |
Appen tilføjer ikke en »Giv mig besked«-knap til dit tema. En anmodning om besked ved genopfyldning skal komme fra din butiksfront, for eksempel fra en knap, du selv tilføjer.
Eksisterende data
Ved installation importerer appen dine eksisterende kunder som Brevo-kontakter. En fuld historisk synkronisering startes fra appens synkroniseringsside. På betalte abonnementer importerer den også produkter, kollektioner, virksomheder og ordrer.
Trin 3: Byg en synkroniseringsregel med agenten
En synkroniseringsregel er en deklarativ definition af én synkronisering: en kilderessource, en Brevo-handling, en feltmapping og et filter. Du skriver den ikke selv. Du beskriver den, en agent bygger den, og en person godkender den.
- Åbn Agents i Tajo, og bed Brevo Integration Architect om synkroniseringen med almindelige ord. For eksempel: »Send Shopify-kunder, der har accepteret e-mailmarketing, til Brevo som kontakter.«
- Agenten undersøger Shopify-connectoren. Dens stikprøve returnerer feltnavne og -typer, aldrig kundeværdier.
- Den foreslår en regel med en feltmapping og et filter, validerer derefter feltmappingen mod Brevos handling og laver en tørkørsel af kladden. Ingen af trinene læser kundeposter.
- Den gemmer reglen som kladde. Du kan også starte fra en skabelon under Connections > Syncs and mappings > New sync from template.
- Request publish approval kører en forhåndsvisning mod din butik. Den læser højst 10 poster, skriver intet til Brevo og flytter ikke cursoren. Den registrerer kun antal: hentede, egnede, mappede og af filteret afviste poster samt mappingfejl. Fejler forhåndsvisningen, oprettes der ingen godkendelse.
- En person godkender anmodningen på siden Approvals med en skriftlig begrundelse. Godkendelsen er bundet til et SHA-256-digest af reglen og udløber efter 30 minutter. Regelsiden viser derefter Publish approved version.
Redigerer du en publiceret regel, bliver den til kladde igen. Den skal gennem forhåndsvisning og godkendelse igen, før den kører.
En rigtig regel
Dette er skabelonen Shopify customers -> Brevo contacts, som Tajo definerer den:
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)",Filteret er samtykketjekket. Tajo udleder begge værdier fra Shopifys email_marketing_consent.state eller det ældre accepts_marketing-flag. En regel, der skriver kontakter til Brevo, kan ikke publiceres uden det. Den anden Shopify-skabelon, Shopify orders → Brevo orders, registrerer ordrer i Brevo for købere, der accepterede marketing ved checkout.
Hvornår en regel kører
- Regler for kontaktsynkronisering kører som standard hvert 15. minut. Hver kørsel starter fra reglens cursor.
- Siden for en aktiv regel har knappen Test run (1 batch).
- En aktiv, publiceret Shopify orders → Brevo orders-regel kører også hvert 15. minut. Dens første planlagte kørsel starter et par minutter før det øjeblik og sender ingen ældre ordrer. Hver senere kørsel sender de ordrer, der er opdateret siden den forrige.
- Tidligere ordrer når kun frem til Brevo, når du selv kører reglen: med Test run (1 batch) eller ved at bede agenten Sync Operator om at køre den.
- En ordreregel kører kun efter tidsplan med skabelonens filter for køberens marketingsamtykke. En regel, hvis filter er redigeret, kører kun, når du selv starter den.
- Efter fem fejlede kørsler i træk sætter reglen sig selv på pause, og dens side viser den seneste fejl. Ret årsagen, og publicer igen.
Hver kørsel står i reglens kørselshistorik med læste, skrevne og fejlede poster samt varigheden.
Det læser og skriver Shopify-connectoren
Synkroniseringsregler skriver kun til destinationen, her Brevo. De skriver aldrig til Shopify.
Tajos Shopify-app anmoder om 12 scopes og foretager en kort række skrivninger til Shopify, for eksempel framelding af samtykke og loyalitetstags. Shopify-tilladelser forklaret gennemgår hvert scope og hver skrivning, og hvad der udløser den.
Agenter og MCP-værter når butikken via Shopify-connectoren:
| Læser | Skriver |
|---|---|
| Butiksoplysninger, kunder (liste og søgning), ordrer, produkter, kundemetafelter, lagerniveauer, status for bulkeksport | Kundemetafelter og kundetags samt start af en bulkeksport. Hver skrivning lægges klar som et forslag og kører først, når den er godkendt. |
Connectoren erklærer også en lagerjustering. Den kræver scopet write_inventory, som Tajos Shopify-app ikke anmoder om.
Trin 4: Brug Shopify-værktøjerne via MCP
Tajo stiller Shopify-connectoren til rådighed som en MCP-server på https://alto.tajo.io/mcp/connectors/shopify. Tilføj den til Claude Code:
claude mcp add --transport http tajo-shopify https://alto.tajo.io/mcp/connectors/shopifyVærten finder Tajos OAuth-server og åbner Tajos login. Adgang er begrænset til early access-konti. Serveren stiller 12 værktøjer til rådighed:
| Værktøj | Det gør det |
|---|---|
preview_tajo_shopify_app | Interaktiv forhåndsvisning af Tajos Shopify-app, vist som MCP UI |
get_shop | Butikkens oplysninger |
search_customers | Søg i kunder med Shopifys forespørgselssyntaks, for eksempel tag:tajo-vip eller total_spent:>100 |
list_customers | List kunder, sideinddelt |
list_orders | List ordrer, sideinddelt |
list_products | List produkter med varianter, billeder og lager |
get_customer_metafields | Læs en kundes metafelter |
get_inventory_levels | Læs en variants lager på tværs af lokationer |
poll_bulk_export | Tjek en bulkeksport, og få dens downloadlink, når den er færdig |
calculate_rewards_profile | Beregn en kundes niveau, point og belønningssaldo ud fra synkroniserede handelsdata |
shopify_propose | Læg én Shopify-skrivning klar som et forslag. Intet sendes. |
shopify_apply | Kør et godkendt forslag |
Fejlfinding
- Kontakter vises ikke i Brevo: se kontakter mangler i Brevo.
- En regel, der ikke kører eller har sat sig selv på pause: se data synkroniseres ikke.
Næste skridt
- Forstå datasynkronisering, sådan opfører synkroniseringsregler sig
- Shopify-tilladelser forklaret, hvert scope og hver skrivning
- Shopify + Brevo, integrationsguiden
- Kontakt teamet for at komme i gang