Dina e-postmallar ser perfekta ut i Dartagnan. Sedan kopierar någon in dem i Braze, och plötsligt går bilder sönder, mellanrum förskjuts eller sidfoten är ”nästan” rätt version.
Lifecycle-marknadsförare känner av det här på kampanjdagar. CRM-ansvariga får sena Slack-pingar när en layout börjar driva. Och byråteam som jonglerar flera kunder vet hur jobbigt det är att hålla en Braze template sync konsekvent utan att det blir ett veckovis måsten.
Det här arbetsflödet håller Dartagnan och Braze synkade automatiskt. Du ser vad det uppdaterar, hur det hanterar bilder och vad du behöver för att köra det säkert.
Så fungerar den här automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Dartagnan till Braze, e-postmallar i synk
flowchart LR
subgraph sg0["Every 5 minutes start Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Token Request"]
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Assign Credentials", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Dartagnan Project list"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Create email template"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>List Available Email Templat.."]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Filtered Project Campaign"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Filtering Dartagnan Campaigns", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Filtering Braze Email Template", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Not existing In Braze"]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Existing In Braze"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Dartagnan HTML & MEDIA To Up.."]
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Encode Content To Update", pos: "b", h: 48 }
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Dartagnan HTML & MEDIA Campa.."]
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Encode Content to Create", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If campaign is modified rece..", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Braze vs Dartagnan", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Embed image in HTML"]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Embed image in HTML 1"]
n19@{ icon: "mdi:play-circle", form: "rounded", label: "Every 5 minutes start", pos: "b", h: 48 }
n20["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Update existing email templa.."]
n7 --> n8
n0 --> n2
n10 --> n15
n1 --> n4
n1 --> n0
n17 --> n12
n18 --> n14
n19 --> n1
n9 --> n16
n2 --> n5
n12 --> n20
n14 --> n3
n16 --> n13
n5 --> n6
n6 --> n10
n6 --> n9
n8 --> n10
n8 --> n9
n11 --> n17
n15 --> n11
n4 --> n7
n13 --> n18
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n19 trigger
class n15,n16 decision
class n0,n2,n3,n4,n5,n11,n13,n20 api
class n17,n18 code
classDef customIcon fill:none,stroke:none
class n0,n2,n3,n4,n5,n9,n10,n11,n13,n17,n18,n20 customIcon
Utmaningen: malldrift mellan Dartagnan och Braze
Manuella mallöverföringar verkar oskyldiga tills du gör dem mer än en gång. Någon exporterar HTML från Dartagnan, klistrar in den i Braze, fixar några trasiga bildlänkar och skickar. En vecka senare ändras headern, och nu jagar du vilka Braze-mallar som använde den gamla. Än värre: team ”fixar” ofta saker direkt i Braze för att hinna till en deadline, vilket gör att Dartagnan blir inaktuellt och ingen litar på det som källa. Den mentala belastningen är påtaglig, och det är de små felen som smiter igenom till produktion.
Det blir snabbt mycket. Här är var det vanligtvis faller isär.
- Att kopiera och klistra HTML och styling till Braze blir en återkommande uppgift som i det tysta äter upp några timmar varje vecka.
- Bild-URL:er kräver ofta specialhantering, så en missad transformering kan leda till att en trasig hero-bild går ut.
- Två källor till sanning uppstår, och rebrands blir röriga eftersom den ”senaste” versionen beror på vem som rörde den sist.
- Team tappar förtroendet och börjar göra extra QA-rundor, eftersom ingen längre är säker på att mallen i Braze matchar Dartagnan.
Lösningen: automatiserad Dartagnan → Braze template sync
Det här n8n-arbetsflödet körs enligt ett schema och kontrollerar Dartagnan efter ändringar i e-postmallar. Det hämtar din aktuella projektkatalog och kampanj-/malldetaljer från Dartagnan, och hämtar sedan den befintliga listan av mallar från Braze. Därefter jämför det båda sidor så att det kan skilja mellan en mall som redan finns (uppdatera) och en som är ny (skapa). Innan något skickas vidare transformerar det HTML-innehållet, inklusive formatering av bild-URL:er så att resurser fortsätter vara hostade i Dartagnan men renderas korrekt i Braze. Till sist skickar det uppdaterat innehåll till Braze via API, så att dina e-postbyggare och utskicksflöden i Braze alltid använder den senaste versionen.
Arbetsflödet startar med en schemalagd synk-trigger och autentiserar sedan mot båda plattformarna. Därifrån delar det upp mallar i ”saknas i Braze” och ”finns redan i Braze”, gör en kontroll av senaste ändring, bäddar in bilder i HTML innan kodning och publicerar det slutliga innehållet. Efter det ligger malluppdateringarna redo i Braze utan att någon behöver kopiera kod för hand.
Vad som förändras: före vs. efter
| Detta elimineras | Effekt du kommer att se |
|---|---|
|
|
Effekt i verkligheten
Säg att du underhåller 12 mallar (nyhetsbrev, kampanjer, lifecycle) och uppdaterar 4 av dem en vanlig vecka. Manuellt tar det ofta runt 20 minuter per mall att kopiera HTML, fixa bilder och dubbelkolla i Braze, vilket är ungefär 80 minuter per vecka, plus det oundvikliga omarbetet. Med det här arbetsflödet lägger du cirka 10 minuter på att granska resultat efter den schemalagda körningen, och resten sköter sig självt. Det är runt en timme tillbaka de flesta veckor, och stressen ”klistrade vi in rätt version?” försvinner i princip.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Dartagnan som källa för e-postmallar.
- Braze för att publicera mallar för utskick och orkestrering.
- Dartagnan API Client ID + Client Secret (hämta från dina Dartagnan admin-/API-inställningar).
Kunskapsnivå: Medel. Du kopplar konton, lägger in API-uppgifter och verifierar ett par API-svar första gången.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (kostnadsfri konsultation i 15 minuter).
Arbetsflödets flöde
En schemalagd kontroll startar allt. Arbetsflödet körs enligt ett schema du väljer (dagligen, varje timme eller något anpassat) så att mallarna hålls uppdaterade utan att någon behöver komma ihåg att trycka ut uppdateringar.
Båda plattformarna autentiseras och skannas. n8n begär en access token för Dartagnan, hämtar din projektkatalog och hämtar kampanj-/malldetaljer. Parallellt listar det dina aktuella Braze e-postmallar så att det finns en strukturerad jämförelsepunkt.
Mallar sorteras till ”uppdatera” och ”skapa”. Arbetsflödet delar upp mallposter, mappar fält till en enhetlig struktur och slår sedan ihop dem i två grupper: mallar som redan finns i Braze och mallar som saknas i Braze. En kontroll av senaste ändring förhindrar onödiga uppdateringar när inget har ändrats.
HTML transformerats och publiceras till Braze. Arbetsflödet bäddar in bilder i HTML (med Dartagnan som asset-host), kodar innehåll för säker överföring och skickar sedan uppdateringar till Braze via API-anrop så att de slutliga mallarna renderas korrekt.
Du kan enkelt ändra synkfrekvensen så att den matchar din releasetakt utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den schemalagda triggern
Ställ in schemat för arbetsflödet så att synkningen körs automatiskt med det intervall ni väljer.
- Lägg till och öppna Scheduled Sync Trigger.
- Ställ in schemaregeln så att den körs med minutes-intervall enligt konfigurationen i noden.
- Koppla Scheduled Sync Trigger till Set Service Credentials.
Steg 2: Anslut tjänsteuppgifter
Ange API-nycklarna och instansuppgifterna som krävs för förfrågningarna mot D’Artagnan och Braze.
- Öppna Set Service Credentials och ersätt platshållarvärden med era riktiga uppgifter.
- Ställ in client_id till
[YOUR_ID](ersätt med ert riktiga client ID). - Ställ in client_secret till
[YOUR_ID](ersätt med er riktiga client secret). - Ställ in instance_url till
https://[YOUR_INSTANCE_URL]. - Ställ in api_key till
[CONFIGURE_YOUR_API_KEY]. - Bekräfta att Set Service Credentials skickar utdata till både List Braze Email Templates och Request Access Token parallellt.
Steg 3: Hämta projekt och tokeniserad åtkomst
Använd tokenförfrågan och projekthämtningen för att samla in kampanjdata från D’Artagnan.
- Öppna Request Access Token och bekräfta att POST-body-parametrarna inkluderar
client_idochclient_secretfrån Set Service Credentials. - I Retrieve Project Catalog, ställ in URL till
https://app.dartagnan.io/api/public/projects. - Ställ in headern Authorization i Retrieve Project Catalog till
Bearer {{ $json.access_token }}. - I Fetch Project Campaign, ställ in URL till
=https://app.dartagnan.io/api/public/projects/{{ $json.id }}och behåll headern Authorization somBearer {{ $('Request Access Token').item.json.access_token }}. - Konfigurera fält i Map Campaign Details som id och campaign_name med uttryck som
{{ $json.campaigns[0].id }}och{{ $json.campaigns[0].name }}.
{{ $json.campaigns[0].name }}-{{ $json.campaigns[0].id }} för att säkerställa konsekvent matchning senare.Steg 4: Normalisera Braze-mallar och matcha poster
Hämta befintliga Braze-mallar och jämför dem med kampanjdata för att avgöra uppdateringar kontra nya mallar.
- I List Braze Email Templates, ställ in URL till
=https://{{ $('Set Service Credentials').item.json.instance_url }}/templates/email/listoch headern Authorization tillBearer {{ $('Set Service Credentials').item.json.api_key }}. - Använd Split Template Records med Field to Split Out inställt på
templates. - Mappa mallfält i Map Braze Template Fields (t.ex. braze_template_name →
{{ $json.template_name }}och email_template_id →{{ $json.email_template_id }}). - Skicka utdata från Map Campaign Details till både Combine Existing Templates och Combine Missing Templates parallellt, och låt Map Braze Template Fields också skicka utdata till båda merge-noderna parallellt.
- I Combine Existing Templates och Combine Missing Templates, behåll mergeByFields inställt för att matcha unified_name med braze_template_name.
- Skicka Combine Existing Templates till Check Recent Modification och Combine Missing Templates till Validate Unified Name.
Steg 5: Bearbeta kampanjinnehåll och generera/uppdatera mallar
Hämta kampanjens HTML, bädda in bilder, koda innehåll och uppdatera eller skapa sedan Braze-mallar.
- Från Check Recent Modification, routa till Get Campaign Content Update och använd URL
=https://app.dartagnan.io/api/public/campaigns/{{ $json.id }}med AuthorizationBearer {{ $('Request Access Token').item.json.access_token }}. - Från Validate Unified Name, routa till Get Campaign Content Create med samma kampanj-URL och samma authorization-header.
- Kör Embed Images in HTML och Embed Images in HTML A för att ersätta bildreferenser med hjälp av den medföljande koden.
- I Encode Update Content och Encode Create Content, ställ in encoded_html till
{{JSON.stringify( $json.html )}}och encoded_plaintext_body till{{JSON.stringify($json.text)}}. - Uppdatera befintliga mallar med Update Braze Email Template med JSON-body-fält som
{{ $json.encoded_html }}och{{ $json.encoded_plaintext_body }}. - Skapa nya mallar med Generate Email Template med URL
=https://{{ $item("0").$node["Set Service Credentials"].json["instance_url"] }}/templates/email/createoch JSON-body-mallnamnet{{ $('Validate Unified Name').item.json.unified_name }}.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att bekräfta att mallar skapas eller uppdateras korrekt och aktivera sedan för användning i produktion.
- Klicka på Execute Workflow för att köra ett manuellt test från Scheduled Sync Trigger.
- Verifiera att List Braze Email Templates returnerar en lista och att Split Template Records ger ut enskilda mallar.
- Bekräfta att Update Braze Email Template eller Generate Email Template tar emot kodad HTML och slutförs utan fel.
- När det fungerar, slå på arbetsflödet till Active så att det körs enligt schemat.
Saker att se upp med
- Braze-credentials kan löpa ut eller kräva specifika behörigheter. Om det strular, kontrollera först omfattningen för din Braze API-nyckel (content blocks/mallar) i Braze-inställningarna.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Dartagnans HTML- och bildregler kan vara känsliga mellan olika klienter. Om en mall ser bra ut i Dartagnan men konstig i Braze, börja med att granska kodsteget ”Embed Images in HTML” och bekräfta att det transformerar URL:er på det sätt som din mall förväntar sig.
Vanliga frågor
Cirka 30 minuter om dina Dartagnan- och Braze API-uppgifter är klara.
Ja, men du behöver någon som är bekväm med att klistra in API-nycklar och testköra en körning. Ingen kodning krävs om du inte vill ändra logiken för bildinbäddning.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in API-användning för Dartagnan och Braze (oftast försumbar vid schemalagda synkar).
Två alternativ: n8n Cloud (hanterat, enklast uppsättning) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Du kan justera schemat i ”Scheduled Sync Trigger” för att matcha din releaserytm och lägga till filtrering direkt efter ”Retrieve Project Catalog” om du bara vill synka specifika taggar eller kategorier. Om dina namngivningskonventioner skiljer sig kan du justera logiken i ”Validate Unified Name” så att jämförelsen matchar dina faktiska mallnamn. För varumärkeskonsekvens är bästa stället att anpassa HTML-transformeringssteget (”Embed Images in HTML”), eftersom det är där du kan tvinga igenom regler som obligatorisk alt-text, spårningsparametrar eller fasta sidfotsblock.
Oftast beror det på utgångna klientuppgifter eller saknade behörigheter för mallåtkomst. Generera om din Dartagnan API Client Secret, uppdatera den i steget ”Set Service Credentials” och kör sedan arbetsflödet igen en gång för att bekräfta att token-skapandet fungerar. Om det fortfarande misslyckas, kontrollera om endpointen för Dartagnans projektkatalog har ändrats eller om ditt konto slår i rate limits vid batchhämtningar.
Den är byggd för batchsynk, så dussintals (till och med några hundra) mallar fungerar bra med ett normalt schema.
Ofta ja, eftersom detta inte är en enkel ”A till B”-zap. Du gör autentisering, listar mallar, jämför dataset, delar upp poster och transformerar sedan HTML innan du trycker ut uppdateringar. n8n hanterar den förgrenade logiken snyggt, och du kan self-hosta för obegränsade körningar om du synkar ofta. Zapier eller Make kan fungera, men du kan behöva sy ihop flera scenarier och ändå få problem med HTML-/bildtransformeringssteget. Prata med en automationsexpert om du vill ha hjälp att välja.
När detta väl körs är Dartagnan fortsatt din källa till sanning och Braze är alltid redo att skicka. Mindre mallpassning, mer kampanjer som går ut med trygghet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.