Du tar ut en ”fullständig” kontaktexport från HubSpot, klistrar in den i ett kalkylark och inser senare att en stor del av posterna saknas. Oftast beror det på paginering. Och det är frustrerande eftersom du inte ser glappen förrän du redan använder listan.
Den här HubSpot Sheets sync-utmaningen slår hårdast mot marketing ops, men även grundare som försöker hålla en felfri CRM-lista känner av den. Byråer som gör kundrevisioner stöter på samma problem, bara med högre insatser och tajtare deadlines.
Det här arbetsflödet fortsätter att hämta sidor tills det inte finns några kvar, och aggregerar sedan allt till ett enda komplett resultat. Du får se hur det fungerar, vad du behöver och var team oftast går i fällan.
Så fungerar den här automatiseringen
Hela n8n-arbetsflödet, från trigger till slutligt utdata:
n8n Workflow Template: HubSpot till Google Sheets, kompletta kontakter
flowchart LR
subgraph sg0["Manual Execution Start Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Execution Start", pos: "b", h: 48 }
n1["<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/>External API Call"]
n2@{ icon: "mdi:cog", form: "rounded", label: "Pass Through Step", pos: "b", h: 48 }
n3@{ icon: "mdi:code-braces", form: "rounded", label: "Delay Handler", pos: "b", h: 48 }
n4@{ icon: "mdi:code-braces", form: "rounded", label: "Prepare Next Endpoint", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Pagination Check", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Assign Next Link", pos: "b", h: 48 }
n7@{ icon: "mdi:code-braces", form: "rounded", label: "Aggregate Results", pos: "b", h: 48 }
n2 --> n3
n3 --> n5
n4 --> n1
n1 --> n2
n6 --> n4
n5 --> n6
n5 --> n7
n0 --> n4
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 n5 decision
class n1 api
class n3,n4,n7 code
classDef customIcon fill:none,stroke:none
class n1 customIcon
Problemet: ”fullständiga” exporter som inte är fullständiga
Kontaktdata i HubSpot är oftast för stor för att returneras i ett enda API-svar. Därför ger API:t dig en sida med resultat plus en markör (en pekare till ”nästa sida”). Om din process bara hämtar första sidan tappar du data utan att märka det. Om du kör om den kan du få dubbletter, eller så lägger du ytterligare en timme på att städa. Värst av allt: det som händer längre ned i kedjan ser först helt okej ut. Segmenteringssiffrorna är lite fel, kampanjpubliker känns ”tunna”, och du lägger tid på att felsöka fel sak.
Det drar snabbt iväg. Här är hur det faller isär i verkligheten.
- Du exporterar kontakter för en kampanj och missar utan att veta om det nyare poster som ligger på senare sidor.
- Någon kör om hämtningen för att ”fixa det”, vilket skapar dubblettrader och rörig rapportering.
- Manuell paginering (kopiera markörer, klistra in URL:er) förvandlar en 10-minutersuppgift till en timme av uppmärksamhetskrävande rutinjobb.
- Rate limits dyker upp vid värsta möjliga tillfälle, så exporten avbryts halvvägs och du vet inte vad du faktiskt fick med.
Lösningen: paginerade HubSpot-hämtningar som gör klart jobbet
Det här n8n-arbetsflödet är byggt för en sak: fortsätta begära HubSpot-kontakter tills API:t säger att det inte finns någon ”nästa sida”, och sedan paketera resultatet till en enda komplett datamängd du kan lita på. Det startar med en manuell trigger så att du kan köra det på beställning (perfekt för revisioner, migreringar och uppdatering av listor). Därefter förbereder det första endpointen, anropar HubSpot-API:t, pausar kort för att undvika rate limits och kontrollerar svaret efter en pagineringsmarkör. Om en markör finns bygger arbetsflödet nästa URL och loopar. Om inte, aggregerar det allt det samlat in till ett enda kombinerat utdata som är redo att skickas till Google Sheets.
Arbetsflödet börjar med att förbereda request-URL:en och anropar sedan HubSpot upprepade gånger och ”följer” markören. Varje varv lägger fler kontakter i högen. När pagineringen tar slut slår arbetsflödet ihop alla sidor till ett slutresultat.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att din HubSpot-portal har cirka 25 000 kontakter och att API:t returnerar 100 per sida. Manuellt landar du på ungefär 250 sid-hämtningar, plus att kopiera markörer och sätta ihop data, vilket kan äta upp cirka 2 timmar när du räknar in städning. Med det här arbetsflödet klickar du på kör en gång och låter det loopa tills det är klart. Du kan få vänta 10–20 minuter beroende på rate limits, men du behöver inte sitta och vakta det, och slutresultatet är en komplett lista för Google Sheets.
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)
- HubSpot som källa för dina kontaktdata.
- Google Sheets för att lagra den sammanslagna exporten.
- Privat app-token i HubSpot (skapa den i HubSpot Settings → Integrations → Private Apps).
Kunskapsnivå: Medel. Du kopierar en API-token, justerar en HubSpot-endpoint och mappar fält till ett kalkylark.
Vill du inte sätta upp det här själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Så fungerar det
Manuell körning startar allt. Du startar arbetsflödet när du behöver en ny hämtning. Det håller det enkelt vid revisioner, migreringar eller engångsstädningar.
Arbetsflödet förbereder request-URL:en. Ett funktionssteg bygger HubSpot-contacts-endpointen och inkluderar valfria query-parametrar (properties, limits, filters).
HubSpot frågas, och sedan saktar arbetsflödet ned. HTTP-anropet hämtar en sida med kontakter, och pass-through- samt delay-logiken hjälper dig undvika rate limits så att du inte kapas mitt i exporten.
Paginering upptäcks och följs tills den tar slut. En IF-kontroll letar efter markören. Om den finns tilldelar ett Set-steg nästa länk och loopen fortsätter. När det inte finns någon markör aggregeras allt till ett enda felfritt resultat som du kan skicka till Google Sheets.
Du kan enkelt ändra vilka kontaktegenskaper som hämtas så att det matchar strukturen i ditt kalkylark. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-implementeringsguide
Steg 1: konfigurera den manuella triggern
Det här arbetsflödet startar med en manuell trigger för att initiera pagineringsloopen.
- Lägg till noden Manual Execution Start som din trigger.
- Lämna alla inställningar som standard i Manual Execution Start (inga parametrar krävs).
- Ni kan valfritt behålla Flowpast Branding som en dokumentationsnotering på er canvas.
Steg 2: anslut det externa api-anropet
Konfigurera API-förfrågan för att hämta paginerad data från HubSpot.
- Lägg till noden External API Call och anslut den efter Prepare Next Endpoint.
- Ställ in URL till
={{$node["Prepare Next Endpoint"].json["next"]}}. - Under Query Parameters lägger ni till hapikey med värdet
[CONFIGURE_YOUR_API_KEY]. - Lägg till limit med värdet
100för att styra sidstorleken.
[CONFIGURE_YOUR_API_KEY] med er riktiga HubSpot API-nyckel, annars kommer förfrågan att misslyckas.Steg 3: konfigurera pagineringshantering
Det här steget loopar igenom sidor, fördröjer förfrågningar och kontrollerar om det finns en länk till nästa sida.
- I Prepare Next Endpoint behåller ni standardfunktionskoden för att initiera och uppdatera
nextfrån tidigare körningar. - Anslut External API Call till Pass Through Step och sedan till Delay Handler.
- I Delay Handler behåller ni funktionskoden som fördröjer med
5000ms för att strypa förfrågningar. - Konfigurera Pagination Check med det booleska villkoret
={{$node["External API Call"].json["paging"] ? true : false}}lika medtrue. - I Assign Next Link ställer ni in fältet next till
={{$node["External API Call"].json["paging"]["next"]["link"]}}och aktiverar Keep Only Set. - Anslut Pagination Check (true-vägen) → Assign Next Link → Prepare Next Endpoint för att fortsätta pagineringen.
Steg 4: konfigurera aggregering av utdata
När pagineringen är klar aggregerar arbetsflödet alla resultat till en enda utdatalista.
- Anslut false-utgången från Pagination Check till Aggregate Results.
- Behåll standardfunktionskoden i Aggregate Results för att samla alla sidor från External API Call.
paging-fält kommer arbetsflödet omedelbart att gå till Aggregate Results. Säkerställ att API:et faktiskt stödjer paginering.Steg 5: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera paginering och aggregering, och aktivera sedan för produktionsanvändning.
- Klicka på Execute Workflow för att köra Manual Execution Start.
- Bekräfta att External API Call returnerar resultat och att Assign Next Link uppdaterar
next-URL:en i varje loop. - Verifiera att Aggregate Results returnerar en enda lista med sammanfogade resultat när pagineringen avslutas.
- När allt ser korrekt ut växlar ni arbetsflödet till Active för produktionsanvändning.
Vanliga fallgropar
- HubSpot-credentials kan löpa ut eller tappa scopes. Om något slutar fungera: kontrollera först behörigheterna för din privata app-token i HubSpot och uppdatera sedan credential i n8n.
- Om du använder Wait-noder eller externa fördröjningar varierar processtiden. Öka väntetiden om noder längre ned fallerar på tomma svar.
- Kolumnmappning i Google Sheets glider över tid. Om du lägger till eller byter namn på en egenskap i HubSpot, säkerställ att din ”set fields”-logik fortfarande matchar kalkylarkets rubriker.
Vanliga frågor
Cirka 30 minuter om din HubSpot-token är redo.
Nej. Du klistrar främst in uppgifter och justerar några fält. ”Logiken” hanteras redan av pagineringsloopen.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 $/månad för högre volym. Du behöver också ta hänsyn till HubSpots API-begränsningar (oftast den verkliga begränsningen).
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 obegränsade körningar, men kräver grundläggande serverhantering.
Ja, och det bör du. De flesta team anpassar logiken i ”Config URL” och ”Prepare Next Endpoint” för att bara begära de kontaktegenskaper de bryr sig om, och justerar sedan ”Assign Next Link” och fältmappningen så att slutresultatet matchar kolumnerna i deras Google Sheet. Du kan också byta trigger: behåll manuell körning för engångsexporter, eller ersätt den med en Webhook-trigger om du vill ha schemalagda uppdateringar via en extern schemaläggare.
Oftast är det en ogiltig eller utgången privat app-token. Skapa en ny token i HubSpot, bekräfta att scopes inkluderar läsning av kontakter och uppdatera sedan credential i n8n. Om det bara fallerar vid större hämtningar kan du slå i rate limits, så öka fördröjningen och minska hur många egenskaper du begär per anrop. En sak till: vissa HubSpot-konton begränsar åtkomst via teambehörigheter, vilket kan se ut som ”slumpmässiga” 403-fel.
Många. I n8n Cloud är den praktiska gränsen din månatliga körningskvot och hur många sidor HubSpot-API:t behöver returnera. Om du self-hostar finns inget körningstak från n8n, men din server och HubSpots rate limits spelar fortfarande roll. För de flesta små till medelstora portaler kör den stabilt så länge du har en rimlig fördröjning mellan anropen.
Ofta, ja. Paginering är där enklare verktyg blir krångliga, eftersom du får kedja steg eller betala för många tasks bara för att ”loopa” genom sidor. n8n hanterar förgrening och loopar snyggt, och med self-hosting kan du köra större exporter utan att se task-kostnaderna dra iväg. Zapier eller Make kan fortfarande fungera bra för små listor eller engångshämtningar, ärligt talat. Om du är osäker: prata med en automatiseringsexpert och få en rak rekommendation.
När du väl har en komplett kontaktlista som flödar in i Google Sheets blir allt nedströms enklare. Arbetsflödet tar hand om den repetitiva sidindelningen så att du kan fokusera på att använda datan, inte jaga den.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.