MAILCRAFT
Start Funkcje Cennik O nas Blog Kontakt Zaloguj się Rozpocznij →
Zarządzanie listą

Import CSV z mapowaniem pól bez psucia bazy

Tablet z kalendarzem obok klawiatury i notatnika

Import CSV z mapowaniem pól wygląda na czynność techniczną i nudną. Do momentu, w którym zepsuje listę, na której stoi cała komunikacja firmy. Kilka minut nieuwagi przy wgrywaniu pliku potrafi kosztować tygodnie odbudowy reputacji nadawcy. Piszemy o tym z perspektywy zespołu, który utrzymuje własną flotę serwerów wysyłkowych i ogląda skutki cudzych importów w logach dostarczeń. Poniżej procedura, którą sami stosujemy przy migracjach baz do MailCraft.

Co się psuje przy imporcie CSV i dlaczego

Skutki złego importu są zawsze te same. Podwojone rekordy, bo klucz dopasowania poszedł na kolumnę z imieniem zamiast na adres. Imiona w polu nazwiska, bo kolumny w pliku były w innej kolejności niż w bazie. I personalizacja, która podstawia pustkę i wysyła powitanie bez imienia do połowy listy.

Baza kontaktów to nie arkusz kalkulacyjny. Błędny wiersz w arkuszu jest po prostu brzydki. Błędny wiersz w bazie wysyłkowej to potencjalny bounce. Twarde odbicia po wgraniu starej, nieczyszczonej listy potrafią wywołać throttling u dużych filtrów – najpierw spowalniają przyjmowanie poczty, potem odrzucają połączenia. Wychodzenie z tego liczy się w tygodniach ostrożnej wysyłki, nie w jednym telefonie do supportu.

Osobna warstwa problemu to zgody. Plik bez kolumny ze źródłem i datą zgody psuje nie tylko dane, ale i zgodność prawną każdej kolejnej kampanii. Po imporcie nie odtworzysz już, skąd wziął się dany adres. Nigdy.

Zasada z naszej praktyki: import jest operacją na produkcji. Nie ćwiczeniem na brudno, nie testem, nie „zobaczymy, co wyjdzie”. Traktuj go jak wdrożenie zmiany na żywym systemie.

Przygotowanie pliku przed importem

Zacznij od kodowania. Plik ma być w UTF-8 bez BOM. Inaczej polskie znaki diakrytyczne rozsypią się już na etapie podglądu, a znacznik BOM doklei się do nazwy pierwszej kolumny i zepsuje jej dopasowanie. Drugi punkt: separator. Standard CSV mówi o przecinku, ale polska wersja Excela zapisuje średnik, bo przecinek pełni u nas rolę separatora dziesiętnego. Sprawdź, co masz naprawdę, zamiast zakładać.

Pola z przecinkiem w środku, na przykład adres pocztowy, muszą być objęte cudzysłowem. To samo dotyczy wartości wielowierszowych. Nagłówek ma być jeden, w pierwszym wierszu, bez pustych kolumn i bez scalonych komórek. Scalona komórka po eksporcie zamienia się w rozjechany wiersz.

  • Kodowanie: UTF-8 bez BOM, znaki diakrytyczne czytelne w surowym pliku
  • Separator: jeden, konsekwentny w całym pliku
  • Nagłówki: unikalne, bez spacji na końcu, bez duplikatów nazw
  • Daty: format ISO, czyli RRRR-MM-DD
  • Telefony: jednolity zapis, najlepiej z prefiksem kraju, bez spacji i myślników
  • Koniec pliku: zero pustych wierszy pod ostatnim rekordem

Tip: otwórz plik w edytorze tekstu, nie w arkuszu. Zobaczysz surową strukturę zamiast interpretacji Excela, który po cichu obcina zera wiodące i zamienia daty na własny format.

Mapowanie pól: klucz, typy, wartości domyślne

Kluczem głównym jest adres e-mail i tylko adres. Przed dopasowaniem trzeba go znormalizować: obciąć białe znaki z obu stron, sprowadzić do małych liter, wywalić znaki niewidoczne, które lubią wjeżdżać razem z kopiowaniem z arkusza. Bez tego „Jan@Firma.pl ” i „jan@firma.pl” to dla systemu dwa różne kontakty.

Mapuj kolumnę po kolumnie, ręcznie. Automat dopasowujący po nazwach nagłówka wygląda wygodnie, ale nagłówek „name” bywa imieniem, bywa nazwą firmy, a czasem siedzi w nim pełne imię i nazwisko w jednym polu. Zgadywanie kosztuje tu więcej niż minuta klikania.

Pilnuj typów danych. Tekst, liczba, data, wartość logiczna zgody – każde z tych pól zachowuje się inaczej przy filtrowaniu i segmentacji. Daty w formacie regionalnym to źródło cichych błędów, bo 03.04 znaczy co innego po obu stronach Atlantyku. A kolumny, których nie umiesz przypisać? Zostaw niezmapowane. Wpychanie ich na siłę do istniejącego pola zamienia porządną bazę w śmietnik. Zakres pól niestandardowych, filtrów i reguł segmentacji opisuje zestawienie funkcji platformy, a samo łączenie warunków AND, OR i NOT w segmencie pokazujemy krok po kroku osobno.

Personalizacja a puste komórki – jak testować podstawienia przed wysyłką

Ustaw wartość domyślną dla każdej zmiennej używanej w treści. Bez fallbacku zamiast „Cześć Aniu” pójdzie „Cześć ,”. Po zmapowaniu przefiltruj listę po pustym polu imienia i wyślij test właśnie na te rekordy. Sprawdzenie podstawień na kompletnym kontakcie nie dowodzi niczego.

Deduplikacja i aktualizacja istniejących rekordów

Przy kontakcie, który już siedzi w bazie, masz trzy strategie: pomiń istniejące, nadpisz wszystkie pola, uzupełnij tylko puste. Domyślnie wybieraj uzupełnianie pustych. Nadpisanie hurtem kasuje dane zebrane wcześniej z formularzy, gdzie ludzie wpisali swoje imię sami – a plik z zewnątrz często ma to samo pole puste albo w gorszej jakości.

Duplikaty siedzą też w samym pliku, nie tylko w relacji do bazy. Ten sam adres w dwóch wierszach, w każdym inne imię i inna firma. System musi wiedzieć, który wiersz wygrywa, zanim zacznie zapisywać. Osobny temat to aliasy i plus-adresy w stylu jan+newsletter@firma.pl. Technicznie trafiają do tej samej skrzynki, formalnie są innym adresem i inaczej reagują na filtrowanie po stronie odbiorcy. My traktujemy je jako osobne kontakty, chyba że klient świadomie zdecyduje inaczej.

Rekordów wypisanych nie usuwaj nigdy. Adres z listy rezygnacji musi na niej zostać także po ponownym imporcie, bo inaczej wróci do wysyłki jako „nowy” kontakt. Najprostszy sposób na skargę i najczęstszy błąd przy migracji między systemami.

Co robić z konfliktem danych – reguła „nowsze wygrywa”

Brzmi rozsądnie, ale działa wyłącznie wtedy, gdy w pliku jest kolumna z datą aktualizacji rekordu. Bez niej „nowsze” znaczy tylko „wgrane później”, co bywa dokładnie odwrotnością prawdy.

Walidacja i zgody: RODO oraz PKE artykuł 398

Walidacja składni to pierwszy krok, nie ostatni. Poprawnie zbudowany adres może wskazywać na domenę, która nie istnieje albo nie ma rekordu MX. Sprawdzaj po kolei: składnię, istnienie domeny, obecność MX. Cały ten łańcuch da się przejść bez wysyłania choćby jednej wiadomości testowej. Adresy funkcyjne typu info@, biuro@, kontakt@ przepuszczaj świadomie – trafiają do wielu osób, generują skargi i mają słabe zaangażowanie, więc ciągną statystyki listy w dół.

Prawo nie robi tu wyjątku dla B2B. Zgoda marketingowa jest wymagana także przy wysyłce na adresy firmowe, a sam NIP w bazie niczego nie legalizuje. Prawo komunikacji elektronicznej, w szczególności artykuł 398, wymaga uprzedniej zgody odbiorcy na przesyłanie informacji handlowej, a RODO nakazuje umieć tę zgodę wykazać.

Dlatego do importu dokładaj kolumny dowodowe:

  • źródło zgody, czyli konkretny formularz, akcja albo punkt styku
  • data i godzina jej udzielenia
  • treść klauzuli w brzmieniu z momentu zapisu
  • adres IP, jeśli zgoda pochodzi z formularza online

Kupionych baz nie wpuszczamy na naszą flotę. To nie kwestia zasad marketingowych, tylko zgodności z prawem i ochrony reputacji adresów IP, z których wysyłają wszyscy nasi klienci. Jeśli chcesz zobaczyć, jak wygląda obsługa list zgodna z przepisami w praktyce, sprawdź platformę do email marketingu MailCraft i sposób, w jaki prowadzimy tam ewidencję zgód.

Import próbny, czyli jak nie zaorać bazy jednym kliknięciem

Kopia zapasowa listy powstaje przed importem, nie po. Odwrotna kolejność kosztuje dużo nerwów i zwykle kończy się ręcznym sklejaniem danych z eksportów. Potem wgraj próbkę: dwadzieścia do pięćdziesięciu wierszy na osobną listę testową. Oglądaj gotowe rekordy w bazie, a nie ekran podglądu mapowania – podgląd pokazuje intencję, rekord pokazuje wynik.

  1. Zrób kopię zapasową listy docelowej.
  2. Zaimportuj próbkę na osobną listę testową.
  3. Obejrzyj kilka gotowych rekordów pole po polu.
  4. Wyślij test personalizacji, w tym na kontakty z pustymi polami.
  5. Uruchom pełny import.
  6. Skontroluj liczbę rekordów, duplikaty i odrzuty po imporcie.

Tip: importuj do nowego segmentu, nie do listy głównej. Trzymaj go osobno, dopóki nie zobaczysz pierwszych statystyk dostarczeń. Segment łatwo wyłączyć, wymieszaną listę trzeba potem rozplątywać.

Przyznajemy się do ograniczenia: cofnięcie importu jednym przyciskiem to funkcja, którą mamy na roadmapie, a nie w panelu. Dziś ratunkiem jest kopia zapasowa i osobna lista. Wolimy powiedzieć to wprost, niż pozwolić ci na import bez zabezpieczenia.

Po imporcie: wysyłka, warmup i obserwacja

Duża porcja nowych adresów zmienia profil ruchu wychodzącego. Filtry po stronie odbiorców to widzą i reagują, nawet jeśli treść jest identyczna jak w poprzednich kampaniach. Pierwszą wysyłkę do świeżego segmentu rozłóż na mniejsze partie, zamiast strzelać całą listą naraz. Obserwuj reakcję po każdej partii i dopiero potem zwiększaj wolumen.

Warstwa techniczna musi stać przed importem, nie po nim. SPF, DKIM, DMARC, spójny Return-Path zgodny z domeną podpisu, poprawny rekord PTR dla adresu wysyłkowego. Naprawianie tego w trakcie kampanii oznacza, że część wysyłki już poszła z gorszym wynikiem.

W pierwszych wysyłkach patrz na cztery rzeczy: twarde bounce, miękkie bounce, skargi oraz odsetek otwarć w podziale na źródło importu. Ten podział podpowiada, która partia danych była słaba. Rekordy generujące twarde odbicie wyłączaj od razu, nie przy następnej kampanii – powtórzona wysyłka na nieistniejącą skrzynkę to czytelny sygnał dla filtra.

Z doświadczenia własnej floty serwerów wysyłkowych: świeżo zaimportowany segment prowadzimy osobno, jak nowy ruch. Dopiero po kilku czystych kampaniach łączymy go z resztą bazy.

Podsumowanie

Import CSV z mapowaniem pól jest bezpieczny wtedy, gdy jest nudny i powtarzalny. Cała sztuka polega na tym, żeby za każdym razem robić to samo, w tej samej kolejności, bez skrótów pod presją czasu.

Trzy filary zostają bez zmian. Czysty plik, przygotowany i sprawdzony w surowej postaci. Świadome mapowanie z kluczem osadzonym na znormalizowanym adresie. Import próbny przed pełnym, na osobnej liście, z testem personalizacji.

Zgoda i jej dowód nie są dodatkiem do kontaktu, tylko jego częścią – równie ważną co adres. Baza bez tej informacji jest niekompletna, obojętnie ile ma rekordów. Reputacja nadawcy zależy od jakości listy bardziej niż od treści kampanii, bo najlepszy tekst nie obroni wysyłki na adresy, które nie istnieją albo nikt o nią nie prosił.

Jeśli planujesz migrację większej bazy, napisz do naszego zespołu. Przejdziemy przez plik i mapowanie razem, zanim cokolwiek trafi na produkcję. Gdy dane mają płynąć automatycznie z CRM-u albo sklepu zamiast z pliku, warto zamiast tego rozważyć połączenie bazy przez integrację.