Du har en lista med djurägare i ett kalkylark. Du har goda intentioner. Sedan kommer måndagen, och ”veckotipset” förvandlas till copy-paste-kaos, missade utskick och pinsamma dubbelmejl.
Den här Sheets Gmail-automationen träffar klinikchefer och marknadsansvariga först, om vi ska vara ärliga. Men prenumerationsteam för husdjur och mindre jourhem/omplaceringsverksamheter känner av det också, eftersom det är svårt att vara konsekvent när allt är manuellt. Målet är enkelt: skicka rätt hälsotips för husdjur, till rätt person, vid rätt tidpunkt, och logga det automatiskt.
Det här flödet hämtar djurposter från Google Sheets, använder AI för att skapa råd som tar hänsyn till plats och ålder, skickar via Gmail (eller SendGrid) och uppdaterar sedan ditt kalkylark så att ingen blir spammad. Du får se hur det fungerar, vad du behöver och var man oftast kör fast.
Så här fungerar automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets + Gmail – skicka och logga husdjurstips
flowchart LR
subgraph sg0["Scheduled Weekly Starter Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Weekly Starter", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Retrieve Pet Records", 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/code.svg' width='40' height='40' /></div><br/>Filter Active Recent"]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Batch Pets Sequentially", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Pass-Through Placeholder", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Compute Pet Age"]
n6@{ icon: "mdi:robot", form: "rounded", label: "Create Custom Tip", pos: "b", h: 48 }
n7["<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/>Assemble Email Payload"]
n8["<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/sendGrid.svg' width='40' height='40' /></div><br/>Dispatch via SendGrid"]
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Send Gmail Advice", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Update Sent Timestamp", pos: "b", h: 48 }
n11@{ icon: "mdi:database", form: "rounded", label: "Record Email Log", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Short Delay", pos: "b", h: 48 }
n1 --> n2
n12 --> n3
n5 --> n6
n7 --> n8
n7 --> n9
n11 --> n12
n3 --> n4
n3 --> n5
n6 --> n7
n9 --> n10
n10 --> n11
n2 --> n3
n8 --> n10
n0 --> n1
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 n0 trigger
class n6 ai
class n1,n10,n11 database
class n2,n5,n7 code
class n8 disabled
classDef customIcon fill:none,stroke:none
class n2,n5,n7,n8 customIcon
Problemet: veckovisa djurmejl blir manuellt merarbete
Att skicka ”hjälpsamma” tips om husdjursvård låter enkelt tills du försöker göra det varje vecka för en växande lista. Någon exporterar en CSV, någon filtrerar ”aktiva” djur, någon annan försöker räkna ut ålder utifrån födelsedatum, och sedan gissar ni vad som är säsongsbetonat för varje plats. Halvvägs inser du att du skickade samma tips förra veckan till samma ägare eftersom spårningskolumnen inte uppdaterades. Nu ber du om ursäkt igen. Den verkliga kostnaden är inte bara tid. Det är den mentala belastningen, inkonsekvensen och att dina bästa kunder slutar öppna mejl när innehållet känns generiskt.
Det eskalerar snabbt. Här är var det brukar fallera i verkliga team.
- Att filtrera ”vem ska få ett mejl” blir en återkommande kalkylarksritual som stjäl ungefär 1–2 timmar varje vecka.
- Födelsedatum ser enkelt ut, men att formatera ålder för kommunikation (”2 år och 3 månader”) är irriterande att göra manuellt och lätt att göra fel.
- Utan en tillförlitlig uppdatering av ”Last_Email_Sent” händer dubbla utskick, och ägarna märker det.
- Utan en strukturerad Email_Log kan du inte svara på enkla frågor som ”Vad skickade vi till Bella förra månaden?”
Lösningen: AI-genererade djurtips skickas från Sheets och spåras automatiskt
Det här n8n-flödet gör ditt Google Sheet till en lättviktig e-postmotor för tips om husdjursvård. På ett schema (standard är måndag morgon) laddar det dina djurposter, filtrerar bort alla som är inaktiva eller som fått ett mejl de senaste 7 dagarna, och räknar sedan ut varje djurs ålder från födelsedatum i ett människovänligt format. Därefter ber det GPT-4o-mini att skriva ett kort, klimatmedvetet tips baserat på djurtyp, ålder och land. När meddelandet är klart skickar flödet det via Gmail (eller SendGrid om du föredrar det), uppdaterar ”Last_Email_Sent” så att du inte dubbel-skickar, och loggar aktiviteten i ett separat Email_Log-ark för rapportering och felsökning.
Flödet börjar med en veckovis schematrigger. Därefter går det igenom filtrering och åldersberäkning, genererar ett personligt tips med OpenAI och avslutar med att skicka mejlet samt skriva tillbaka två spårningsuppdateringar till Google Sheets.
Det här får du: automation vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du mejlar 200 djurägare varje vecka. Manuellt tar även en snabb process ungefär 1 minut per ägare för att filtrera, anpassa, skicka och anteckna någonstans, vilket blir cirka 3–4 timmar. Med det här flödet lägger du cirka 15 minuter på att kontrollera kalkylarket och testa en post, och sedan låter du körningen bli klar i bakgrunden. Utskick, tidsstämpeluppdateringar och Email_Log-rader sker automatiskt, så den veckovisa ”mejldagen” slutar äta upp din kalender.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra djur, ägare och loggar.
- Gmail för att skicka mejl från din inkorg.
- OpenAI API-nyckel (hämta den i OpenAI-dashboarden)
Kunskapsnivå: Medel. Du kopplar in autentiseringar, klistrar in ditt Sheet ID och testkör med några rader.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett veckoschema sätter igång. Flödet kör på en fast dag och tid (standard är måndag kl. 09:00), så du behöver inga påminnelser eller kalenderuppgifter.
Ditt Google Sheet blir källan som gäller. n8n laddar rader från arket ”Pets” och filtrerar sedan fram endast djur som är markerade som aktiva och som inte mejlats de senaste 7+ dagarna. Det här är skyddsräcket för ”inga dubbla utskick”.
Ålder beräknas och sedan skriver AI tipset. Flödet omvandlar Date_of_Birth till en läsbar ålder och skickar in djurtyp, ålder och land i en OpenAI GPT-4o-mini-prompt så att rådet blir säsongsanpassat och relevant.
Mejlet skickas och allt loggas. Flödet skickar via Gmail (eller SendGrid om du byter leverantör), uppdaterar Last_Email_Sent i Pets-arket och skriver en rad i Email_Log med tidsstämpel, förälders e-post, djurnamn och status.
Du kan enkelt ändra mejlmall och tipskategorier så att de matchar din ton, dina erbjudanden eller medicinska friskrivningar utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den schemalagda triggern
Ställ in veckoschemat som startar arbetsflödet och hämtar husdjursrader.
- Lägg till och öppna Scheduled Weekly Starter.
- Ställ in Rule till weekly med Trigger at Day
1och Trigger at Hour9(som visas i noden). - Koppla Scheduled Weekly Starter till Retrieve Pet Records.
Steg 2: anslut Google Sheets
Hämta husdjursdata och förbered kalkylbladets ändpunkter för uppdateringar och loggning.
- Öppna Retrieve Pet Records och ställ in Document till
[YOUR_ID]och Sheet till[YOUR_ID](Parents_Children). - I Retrieve Pet Records behåller ni filtret för Status med Lookup Value
Active. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Retrieve Pet Records.
- Öppna Update Sent Timestamp och ställ in Operation till
appendOrUpdate, Document till[YOUR_ID]och Sheet till[YOUR_ID](Pets). - I Update Sent Timestamp mappar ni kolumnerna: Email till
{{ $('Assemble Email Payload').item.json.email }}och Last_Email_Sent till{{$now}}, med Matching Columns satt tillEmail. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Update Sent Timestamp.
- Öppna Record Email Log och ställ in Operation till
appendOrUpdate, Document till[YOUR_ID]och Sheet till[YOUR_ID](Email_Log). - I Record Email Log mappar ni kolumnerna: Status till
{{ $('Send Gmail Advice').item.json.labelIds[0] }}, Pet_Name till{{ $('Assemble Email Payload').item.json.pet_name }}, Timestamp till{{ $now }}, Parent_Email till{{ $('Assemble Email Payload').item.json.email }}och Tip_Category till{{ $('Assemble Email Payload').item.json.tip_category }}, med Matching Columns satt tillParent_Email. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Record Email Log.
⚠️ Vanlig fallgrop: Ersätt alla [YOUR_ID]-platshållare med era faktiska dokument- och blad-ID:n i Google Sheet, annars kommer arbetsflödet att returnera tomma data.
Steg 3: ställ in filtrering och batchning
Filtrera aktiva husdjur, batcha dem och förbered loopen i arbetsflödet.
- Öppna Filter Active Recent och ställ in JavaScript Code till
const items = $input.all();\n\nreturn items.filter(item => {\n // Must be Active status\n if (item.json.Status !== 'Active') return false;\n \n // Never sent email = include\n if (!item.json.Last_Email_Sent) return true;\n \n // Sent >7 days ago = include\n const daysSince = (Date.now() - new Date(item.json.Last_Email_Sent)) / (1000*60*60*24);\n return daysSince > 7;\n});. - Koppla Filter Active Recent till Batch Pets Sequentially.
- Behåll Batch Pets Sequentially med standardinställningar i Options för att behandla husdjuren ett i taget.
- Observera att Batch Pets Sequentially skickar output till Pass-Through Placeholder (för framtida utbyggnad) och till Compute Pet Age för faktisk bearbetning.
Tips: Pass-Through Placeholder är en no-op-nod som används för felsökning eller framtida grenar—låt den vara inkopplad, men den förändrar inte data.
Steg 4: ställ in bearbetning och generering av AI-tips
Beräkna husdjurets ålder, generera AI-tips och bygg ihop en konsekvent e-post-payload.
- Öppna Compute Pet Age och ställ in JavaScript Code till
const items = $input.all();\n\nreturn items.map(item => {\n const birthDate = new Date(item.json.Date_of_Birth);\n const ageInMs = Date.now() - birthDate;\n const ageMonths = Math.floor(ageInMs / (1000 * 60 * 60 * 24 * 30.44));\n const ageYears = Math.floor(ageMonths / 12);\n const remainingMonths = ageMonths % 12;\n \n let petAge;\n if (ageMonths < 12) {\n petAge = `${ageMonths} month${ageMonths !== 1 ? 's' : ''}`;\n } else if (remainingMonths === 0) {\n petAge = `${ageYears} year${ageYears !== 1 ? 's' : ''}`;\n } else {\n petAge = `${ageYears} year${ageYears !== 1 ? 's' : ''} and ${remainingMonths} month${remainingMonths !== 1 ? 's' : ''}`;\n }\n \n return {\n json: {\n ...item.json,\n pet_age_months: ageMonths,\n pet_age: petAge\n }\n };\n});. - Öppna Create Custom Tip och ställ in Model till
gpt-4o-minimed Temperature0.7. - I Create Custom Tip säkerställer ni att användarprompten innehåller uttrycken
{{ $json.Pet_Name }},{{ $json.Pet_Type }},{{ $json.pet_age_months }},{{ $json['Country (ISO)'] }}och{{ $now.format('MMMM YYYY') }}, och att systemprompten innehåller{{ $now.format('MMMM') }}. - Inloggningsuppgifter krävs: Anslut era openAiApi-uppgifter i Create Custom Tip.
- Öppna Assemble Email Payload och ställ in JavaScript Code till
// Get pet data from Calculate Pet Age node\nconst petData = $('Compute Pet Age').item.json;\nconst aiResponse = $json.message.content;\n\nconst cleanResponse = aiResponse.replace(/```json\\n?/g, '').replace(/```\\n?/g, '').trim();\n\nlet tipData;\ntry {\n tipData = JSON.parse(cleanResponse);\n} catch (e) {\n tipData = {\n topic: 'Weekly Pet Care Tip',\n headline: `Important advice for ${petData.Pet_Name}`,\n content: cleanResponse,\n category: 'General'\n };\n}\n\nreturn {\n json: {\n email: petData.Email,\n owner_name: petData.Owner_Name,\n pet_name: petData.Pet_Name,\n pet_type: petData.Pet_Type,\n pet_age: petData.pet_age,\n pet_age_months: petData.pet_age_months,\n tip_topic: tipData.topic,\n tip_headline: tipData.headline,\n tip_content: tipData.content,\n tip_category: tipData.category,\n row_number: petData.row_number\n }\n};.
Steg 5: konfigurera e-postutskick och loggning
Skicka e-post via två kanaler, uppdatera husdjursraden, logga utskicket och stryp takten mellan batchar.
- Notera den parallella grenen: Assemble Email Payload skickar output både till Dispatch via SendGrid och Send Gmail Advice parallellt.
- Öppna Dispatch via SendGrid och ställ in To Email till
{{ $json.email }}, From Name tillPetCare Team, From Email till[YOUR_EMAIL], Template ID tilld-xxxxxx, och behåll Dynamic Template aktiverad. - I Dispatch via SendGrid mappar ni fälten i den dynamiska mallen:
owner_name,pet_name,tip_topic,tip_headline,tip_content,tip_categoryochpet_typetill respektive uttryck från Assemble Email Payload. - Öppna Send Gmail Advice och ställ in Send To till
{{ $json.email }}, Subject till{{ $json.tip_headline }}och Message till.Hi {{ $json.owner_name }},
\n\n{{ $json.tip_headline }}
\n\n{{ $json.tip_content }}
\n\n\nStay pawsitive! 🐾
\nPetCare Team - Inloggningsuppgifter krävs: Anslut era gmailOAuth2-uppgifter i Send Gmail Advice.
- Bekräfta att både Dispatch via SendGrid och Send Gmail Advice är kopplade till Update Sent Timestamp, och därefter till Record Email Log.
- Öppna Short Delay och ställ in Amount till
2, och koppla sedan tillbaka den till Batch Pets Sequentially för att styra tempot i loopen.
⚠️ Vanlig fallgrop: Dispatch via SendGrid är inaktiverad i det här arbetsflödet och använder platshållarvärdena [YOUR_EMAIL] och d-xxxxxx. Aktivera noden och ersätt platshållarna innan ni förlitar er på SendGrid.
Steg 6: testa och aktivera ert arbetsflöde
Verifiera hela dataflödet, AI-svaret och e-postleveransen innan ni går live.
- Klicka på Execute Workflow och verifiera att Retrieve Pet Records returnerar aktiva rader och att Filter Active Recent filtrerar korrekt.
- Bekräfta att Create Custom Tip skapar ett tips i JSON-format och att Assemble Email Payload ger ifyllda fält som
emailochtip_headline. - Kontrollera att minst ett mejl skickas via Send Gmail Advice (och via Dispatch via SendGrid om den är aktiverad).
- Verifiera att Update Sent Timestamp uppdaterar husdjursraden och att Record Email Log lägger till en loggrad.
- När ni är nöjda växlar ni arbetsflödet till Active så att Scheduled Weekly Starter körs varje vecka i produktion.
Vanliga fallgropar
- Åtkomst till Google Sheets kan fallera om det anslutna Google-kontot tappar behörighet till arket. Om något skapar fel, kontrollera först n8n-inloggningen och delningsinställningarna för arket.
- Om du använder Wait-noder eller extern bearbetning varierar processtiderna. Öka väntetiden om noder längre fram fallerar på grund av tomma svar.
- OpenAI-prompter är aldrig ”ställ in och glöm”. Lägg in er varumärkeston och eventuella säkerhetsnoteringar i prompten ”Create Custom Tip” tidigt, annars kommer du fortsätta skriva om mejl för hand.
Vanliga frågor
Cirka en timme om ditt Google Sheet redan är strukturerat.
Nej. Du kommer mest koppla konton och klistra in ditt Sheet ID. Den enda ”tekniska” delen är att testa med några rader så att du litar på filterlogiken.
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 OpenAI API-kostnader, som vanligtvis är låga för korta tips.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) 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.
Ja. Det här flödet innehåller redan båda vägarna, så du inaktiverar noden ”Send Gmail Advice” och aktiverar ”Dispatch via SendGrid”. Vanliga anpassningar är att ändra mejlmallen, lägga till tipskategorier (som tandvård eller parasitförebyggande) och justera prompten ”Create Custom Tip” så att den matchar klinikens ton.
Oftast är det ett behörighetsproblem. Säkerställ att Google-kontot i n8n fortfarande har åtkomst till arket och kontrollera sedan Sheet ID som är konfigurerat i stegen ”Retrieve Pet Records”, ”Update Sent Timestamp” och ”Record Email Log”. Om arket kopierades eller flyttades mellan Drive-mappar kan delning och ägarskapsändringar i det tysta göra att det slutar fungera.
För de flesta små team fungerar det bra med hundratals till några tusen rader.
För just det här användningsfallet brukar n8n passa bättre eftersom du kan batcha igenom många djur, förgrena mellan Gmail och SendGrid och hålla logiken ”mejla inte inom 7 dagar” läsbar på ett ställe. Zapier och Make kan göra det, men du får ofta betala mer när du lägger till filter, uppslag och AI-steg. n8n ger dig också möjlighet att self-hosta, vilket gör att exekveringsgränser inte blir en ständig oro när listan växer. Den stora skillnaden är kontroll: att logga till ett andra ark och uppdatera Last_Email_Sent är rakt på här, inte en hög av separata automationer. Om du är osäker kan du prata med en automationsexpert så hjälper vi dig välja den enklaste lösningen.
När det här väl rullar slutar dina veckovisa djurtips vara en att-göra-lista och blir ett system. Flödet tar hand om de repetitiva delarna så att du kan fokusera på bättre innehåll och bättre vård.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.