This commit is contained in:
2026-05-15 23:19:26 +02:00
parent def1fae0fc
commit 75b9434de5
113 changed files with 50906 additions and 1305 deletions

1
.obsidian/app.json vendored Normal file
View File

@@ -0,0 +1 @@
{}

1
.obsidian/appearance.json vendored Normal file
View File

@@ -0,0 +1 @@
{}

33
.obsidian/core-plugins.json vendored Normal file
View File

@@ -0,0 +1,33 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"footnotes": false,
"properties": true,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": true,
"bases": true,
"webviewer": false
}

181
.obsidian/workspace.json vendored Normal file
View File

@@ -0,0 +1,181 @@
{
"main": {
"id": "3f59f5e90e59eb16",
"type": "split",
"children": [
{
"id": "2dc50d9d622925dd",
"type": "tabs",
"children": [
{
"id": "50874c953e5f9bdd",
"type": "leaf",
"state": {
"type": "empty",
"state": {},
"icon": "lucide-file",
"title": "Nowa karta"
}
}
]
}
],
"direction": "vertical"
},
"left": {
"id": "4ea9df900d7f5928",
"type": "split",
"children": [
{
"id": "2612d8ccef263088",
"type": "tabs",
"children": [
{
"id": "8da90c1bd15733b5",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Przeglądarka plików"
}
},
{
"id": "32d60256220fa10d",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Wyszukiwarka"
}
},
{
"id": "ba8eb9c149202945",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Ulubione"
}
}
]
}
],
"direction": "horizontal",
"width": 300
},
"right": {
"id": "eba8ccc69c4fa26a",
"type": "split",
"children": [
{
"id": "23e5acb3c0462964",
"type": "tabs",
"children": [
{
"id": "a0c3faa7e6698dca",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Linki zwrotne"
}
},
{
"id": "a15cf2efefb71448",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Łącza wychodzące"
}
},
{
"id": "b85e3764a86214ff",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tagi"
}
},
{
"id": "add518694a71d3d5",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency",
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-archive",
"title": "Wszystkie atrybuty"
}
},
{
"id": "159050c414a15880",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Konspekt"
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:Otwórz okno szybkiego wyboru": false,
"graph:Otwórz podgląd grafu": false,
"canvas:Stwórz nową tablicę": false,
"daily-notes:Otwórz dzisiejszy dziennik": false,
"templates:Wstaw szablon": false,
"command-palette:Otwórz listę poleceń": false,
"bases:Stwórz nową bazę danych": false
}
},
"active": "50874c953e5f9bdd",
"lastOpenFiles": []
}

View File

@@ -1,3 +0,0 @@
# Memory Index
- [Format listy klientów](feedback_client_list_format.md) — listy klientów prezentować jako numerowaną tabelę markdown

View File

@@ -6,4 +6,19 @@ GOOGLE_ADS_MANAGER_ACCOUNT_ID=8976093870
ADSPRO_API_URL=https://adspro.projectpro.pl/api.php
ADSPRO_API_KEY=42bda4bafa556546990c817b7ec1feab8ca5ed3e134ac797
ADSPRO_HOST=host700513.hostido.net.pl
ADSPRO_USERNAME=www@adspro.projectpro.pl
ADSPRO_PASSWORD=S75kmnqmD5heMZzJQf5n
ADSPRO_REMOTE_PATH=/public_html
# Import wiedzy przez OpenAI API
# Uzywane tylko przez: python gads.py wiedza dodaj ...
OPENAI_API_KEY=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
# Opcjonalnie: model do ekstrakcji regul wiedzy.
# Mozesz tez podac model jednorazowo przez --model.
KNOWLEDGE_OPENAI_MODEL=gpt-4.1-mini
# Google Analytics 4 API
GA4_REFRESH_TOKEN=1//09_hLDPStXz3QCgYIARAAGAkSNwF-L9IrKlofxXOfEYoI9jyiHebuffRwcLtBnUQB48jBU3De4MvTOLyZ5FYLRapCt5bcLjsvyxc
GA4_PROPERTY_ID_ibra-makeup.pl=401893399

6
.sync/Archive/.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
.env
config/clients.toml
clients/
__pycache__/
*.pyc

View File

@@ -166,6 +166,80 @@ Popros uzytkownika tylko o numer. Po wyborze:
- `2` pokaz liste klientow,
- `3` zakoncz.
## Raport klienta
Gdy uzytkownik poprosi o raport klienta albo poda komende w stylu:
```text
analiza-klienta aruba.rzeszow.pl 02-2026
```
uruchom:
```powershell
python gads.py analiza-klienta aruba.rzeszow.pl 02-2026
```
To jest alias dla generowania miesiecznego raportu HTML klienta. Obslugiwane sa formaty miesiaca `MM-YYYY`, `MM.YYYY` i `YYYY-MM`.
Jesli uzytkownik napisze tylko:
```text
raport-klienta
```
uruchom:
```powershell
python gads.py raport-klienta
```
Pokaz uzytkownikowi liste klientow i popros o numer. Po wyborze klienta oraz miesiaca uruchom:
```powershell
python gads.py raport-klienta --client-number <numer-klienta> --month <YYYY-MM>
```
Komenda najpierw pobiera dane i zatrzymuje sie przed generowaniem HTML. Tworzy plik roboczy:
```text
scripts/reports/output/<domena>_<YYYY-MM>_recommendations.json
```
Wnioski i rekomendacje przygotowuje agent AI, nie skrypt. Agent ma przeczytac dane raportu i kontekst w pliku rekomendacji, uzupelnic `recommendations` konkretnymi wnioskami, pokazac je uzytkownikowi i zapytac o akceptacje.
Wnioski pisz z perspektywy osoby, ktora obsluguje konto Google Ads klienta. Nie pisz do klienta, ze `warto cos sprawdzic`, `trzeba zweryfikowac` albo `nalezy przeanalizowac`, jakby decyzja byla po jego stronie. Pisz decyzyjnie: co robimy, co zostawiamy, co ograniczamy, co kontrolujemy i jaki jest nastepny krok po naszej stronie. Unikaj bezosobowych, nijakich rekomendacji.
W tekstach raportu dla klienta uzywaj poprawnych polskich znakow. Dotyczy to szczegolnie tytulow, wnioskow i rekomendacji w pliku `recommendations`. Nie zapisuj tam wersji bez ogonkow typu `zwiekszamy`, `wartosc`, `srednia`, jezeli tekst trafi do HTML widocznego dla klienta.
Po akceptacji wnioskow uruchom:
```powershell
python gads.py raport-klienta --client <domena> --month <YYYY-MM> --confirm-recommendations TAK
```
Dopiero wtedy komenda generuje lokalny raport HTML w:
```text
scripts/reports/output/<domena>/<YYYY-MM>/index.html
```
Jeżeli klient ma w `config/clients.toml` ustawione `sales_history_sheet`, historia sprzedaży miesięcznej oraz trzy kafelki w sekcji `E-commerce — Sprzedaż` mają pochodzić z tego arkusza Google Sheet. Arkusz powinien zawierać kolumny: `Miesiąc`, `Transakcje`, `Przychody`, `Średnia wartość koszyka`. Nie zastępuj tych danych GA4, jeżeli arkusz jest skonfigurowany.
Po wygenerowaniu raportu pokaz uzytkownikowi sciezke do pliku i popros o akceptacje przed wysylka na serwer. Nie wysylaj raportu bez jasnej zgody uzytkownika.
Po akceptacji uruchom upload:
```powershell
python gads.py raport-klienta --client <domena> --month <YYYY-MM> --confirm-upload TAK
```
Po wysylce podaj URL:
```text
https://adspro.projectpro.pl/raporty/<slug>/<YYYY-MM>/
```
## Zasady komunikacji
- Pisz po polsku.
@@ -245,6 +319,58 @@ Przed wdrozeniem tytulow agent musi uzupelnic docelowe wartosci tytulow w zapisa
Przed wdrozeniem kategorii agent musi uzupelnic docelowe wartosci kategorii w zapisanym planie JSON i dopiero wtedy zapytac uzytkownika o zgode.
Unit pricing moze byc proponowany przez skrypt, jezeli da sie go jednoznacznie odczytac z nazwy produktu.
## Reczne przypisywanie regul
Gdy uzytkownik napisze:
```text
Przypisz regule:
- tresc reguly do oceny
```
agent ma potraktowac to jako prosbe o kuracje pojedynczej reguly wiedzy.
Kolejnosc pracy:
1. Sprawdz aktualne grupy i zadania w `config/tasks.toml`.
2. Nie przywracaj usunietych zadan ani grup. Jesli lista zadan jest ograniczona, uznaj to za swiadoma decyzje uzytkownika.
3. Ocen, czy regule warto dodac do narzedzia.
4. Zaproponuj docelowe brzmienie reguly: `condition`, `recommendation`, `risk`, `rule_type`, `topic`, `confidence` i docelowe `task_ids`.
5. Zaproponuj policzalny `machine_condition` i `machine_effect`, jezeli regule da sie bezpiecznie zastosowac w skrypcie na danych pobieranych przez dane zadanie.
6. `machine_condition` ma uzywac tylko pol, ktore naprawde istnieja w planie danego zadania, np. `channel_type`, `conversions_30d`, `bidding_strategy_type`, `budget_context`, `search_budget_lost_impression_share`.
7. Jesli nie da sie zbudowac bezpiecznego warunku maszynowego, napisz to wprost i zaproponuj zapis reguly bez automatycznego wplywu, jako kontekst dla agenta AI/czlowieka.
8. Uzywaj tylko istniejacych identyfikatorow zadan z `config/tasks.toml`.
9. Jesli nie ma dobrego zadania, powiedz, ze regule lepiej odlozyc albo dodac dopiero po utworzeniu nowego zadania.
10. Nie zapisuj reguly do `knowledge/rules.jsonl`, dopoki uzytkownik jasno nie odpowie `Dodaj`.
11. Po odpowiedzi `Dodaj` dopisz jedna kompletna linie JSONL do `knowledge/rules.jsonl`.
Przy zapisie do `knowledge/rules.jsonl` uzupelnij pola: `id`, `status`, `topic`, `task_ids`, `suggested_task_ids`, `rule_type`, `condition`, `recommendation`, `risk`, `source`, `source_file`, `confidence`, `duplicate_of`, `supersedes`, `text`, `created_at`, `updated_at`. Jezeli regula ma dzialac automatycznie, dodaj tez `machine_condition` i `machine_effect`.
Przyklad policzalnej czesci reguly:
```json
{
"machine_condition": {
"all": [
{"field": "channel_type", "op": "eq", "value": "SEARCH"},
{"field": "conversions_30d", "op": "lt", "value": 15},
{"field": "bidding_strategy_type", "op": "in", "value": ["MAXIMIZE_CONVERSIONS", "TARGET_CPA", "MAXIMIZE_CONVERSION_VALUE", "TARGET_ROAS"]}
]
},
"machine_effect": {
"level": "ostroznie",
"action": "nie przechodz na automatyzacje konwersyjna",
"reason_prefix": "Regula wiedzy"
}
}
```
Ten tryb jest reczna alternatywa dla komendy:
```powershell
python gads.py wiedza przypisz
```
## Reguly i wyjatki klientow
Ustawienia globalne i wyjatki per klient sa w:

View File

@@ -1,218 +0,0 @@
# Rozbudowa narzedzia
Ten plik opisuje, jak dodawac nowe grupy zadan, zadania i skrypty, zeby kolejny agent nie musial projektowac procesu od zera.
## Zasada architektury
Kazde zadanie powinno dzialac w tym samym modelu:
1. Pobierz aktualne dane.
2. Zbuduj plan.
3. Zapisz plan do `clients/<domena>/plans/` jako `.json` i `.md`.
4. W trybie `--plan-only` nie wdrazaj zmian.
5. Po akceptacji uzytkownika wdrazaj tylko plan zapisany w JSON.
6. Zapisz historie do:
- `clients/<domena>/history/YYYY-MM-DD.jsonl`
- `clients/<domena>/changes/YYYY-MM-DD.md`
Agent AI prowadzi uzytkownika, ale logika pobierania danych, analizy i wdrozenia zmian ma byc w Pythonie.
## Dodanie nowej grupy zadan
Przed dodaniem wiekszego zakresu sprawdz:
```text
OLD_COMMANDS_CHECKLIST.md
```
To jest lista rzeczy sprawdzanych przez stary system z `D:\google ads\`.
Edytuj:
```text
config/tasks.toml
```
Dodaj nowa grupe:
```toml
[[groups]]
id = "search"
name = "Kampanie Search"
```
Zadania beda numerowane automatycznie jako `2.1`, `2.2`, itd. w zaleznosci od kolejnosci grup.
## Dodanie nowego zadania do grupy
W `config/tasks.toml` dodaj zadanie pod odpowiednia grupa:
```toml
[[groups.tasks]]
id = "check_search_settings"
name = "Sprawdzenie ustawien"
description = "Sprawdza ustawienia kampanii Search wedlug regul globalnych i wyjatkow klienta."
```
`id` jest techniczne i musi byc stabilne. `name` i `description` sa dla uzytkownika.
## Plik zadania w Pythonie
Dodaj modul w:
```text
src/gads_v2/tasks/
```
Przyklad nazwy:
```text
src/gads_v2/tasks/search_settings_check.py
```
Minimalny wzorzec funkcji:
```python
def run_check_search_settings(
client_config: ClientConfig,
global_rules: dict,
plan_only: bool = False,
apply_plan_path: str | None = None,
confirm_apply: str | None = None,
show_navigation: bool = True,
) -> None:
...
```
Wymagania:
- `plan_only=True` zawsze tylko zapisuje plan.
- `apply_plan_path` wdraza tylko wskazany plan JSON.
- `confirm_apply` musi wymagac wartosci `TAK`.
- `show_navigation=False` musi ukrywac pytanie `Co dalej`, bo uzywa tego tryb sekwencji.
## Struktura planu
Plan powinien miec klase lub slownik z metodami:
```python
to_dict()
from_dict()
```
Plan JSON musi zawierac:
```json
{
"created_at": "...",
"client": "example.pl",
"task": "task_id",
"changes": []
}
```
Plan Markdown powinien zawierac:
- krotkie podsumowanie,
- tabele po kampaniach, jesli zadanie dotyczy kampanii,
- tabele planowanych dzialan,
- ostrzezenia lub pominiete reguly.
## Podpiecie zadania do CLI
Edytuj:
```text
src/gads_v2/cli.py
```
1. Zaimportuj funkcje zadania:
```python
from .tasks.search_settings_check import run_check_search_settings
```
2. Dodaj `id` do argumentu `--task`:
```python
parser.add_argument("--task", choices=["sync_pla_cl1", "check_pla_settings", "check_search_settings"], ...)
```
3. Dodaj obsluge w `run_task()`:
```python
if task_id == "check_search_settings":
run_check_search_settings(
client,
global_rules,
plan_only=plan_only,
apply_plan_path=apply_plan_path,
confirm_apply=confirm_apply,
show_navigation=show_navigation,
)
return
```
## Reguly globalne i wyjatki klientow
Reguly trzymaj w:
```text
config/clients.toml
```
Przyklad globalny:
```toml
[global_rules.search_settings]
require_presence_only = true
require_search_partners_off = true
```
Wyjatek per klient:
```toml
[clients."example.pl".search_settings]
require_search_partners_off = false
```
W kodzie uzywaj:
```python
rules = client_config.effective_rules(global_rules, "search_settings")
```
## Numeracja i wybory
Lista zadan uzywa formatu:
```text
1.1 - pierwsze zadanie w pierwszej grupie
1.2 - drugie zadanie w pierwszej grupie
1.0 - wszystkie zadania z pierwszej grupy
ALL - wszystkie zadania ze wszystkich grup
```
Nie dodawaj recznej numeracji do `tasks.toml`. Numeracja wynika z kolejnosci grup i zadan.
## Test po dodaniu zadania
Uruchom:
```powershell
python -m compileall -q gads.py src
python gads.py analiza-klienta --client-number 1
python gads.py analiza-klienta --client-number 1 --select <nr> --plan-only
```
Jesli zadanie wdraza zmiany, przetestuj najpierw tylko `--plan-only`.
## Format komunikacji agentow
Instrukcja dla agentow jest w:
```text
AGENTS.md
```
Po dodaniu nowego typu zadania dopisz tam tylko specjalne zasady, jesli agent ma wiedziec cos ponad standardowy przeplyw.

View File

@@ -1,67 +0,0 @@
# Google Ads ver 2
Terminalowe narzedzie do pracy na kontach Google Ads klientow.
Instrukcja pracy dla Claude Code, Codex, Gemini CLI i innych agentow AI jest w `AGENTS.md`.
Instrukcja rozbudowy o nowe grupy i zadania jest w `DEVELOPMENT.md`.
Backlog rzeczy sprawdzanych w starej wersji jest w `OLD_COMMANDS_CHECKLIST.md`.
## Start
1. Uzupelnij `.env` na podstawie `.env.example`.
2. Uzupelnij `config/clients.toml` na podstawie `config/clients.example.toml`.
3. Zainstaluj zaleznosci:
```powershell
python -m pip install -r requirements.txt
```
4. Uruchom menu:
```powershell
python gads.py
```
Albo uruchom konkretne zadanie bez menu:
```powershell
python gads.py --client laitica.pl --task sync_pla_cl1
```
Tryb dla Claude Code, Codex albo Gemini CLI:
```powershell
python gads.py analiza-klienta
python gads.py analiza-klienta --client-number 5
python gads.py analiza-klienta --client-number 5 --task-number 1 --plan-only
```
Po tej komendzie narzedzie zapisze plan w `clients/<domena>/plans/`.
Agent czyta plik `.md` albo `.json`, analizuje go i pyta Cie o zgode.
Po Twojej akceptacji agent uruchamia wdrozenie konkretnego planu:
```powershell
python gads.py --client laitica.pl --task sync_pla_cl1 --apply-plan clients/laitica.pl/plans/PLAN.json --confirm-apply TAK
```
## MVP
Pierwsze zadanie:
- pobiera kampanie `[PLA_CL1]` z Google Ads,
- wyciaga segmenty CL1 z nazw kampanii,
- pobiera produkty z adsPRO,
- przygotowuje plan synchronizacji grup reklam,
- czeka na akceptacje przed wdrozeniem zmian,
- zapisuje historie w katalogu klienta.
## Dane i historia
- `config/clients.toml` - lista klientow i identyfikatory kont.
- `config/clients.toml` - takze reguly globalne i wyjatki per klient, np. ustawienia kampanii PLA.
- `.env` - dane dostepowe do Google Ads i adsPRO.
- `clients/<domena>/data/` - pobrane dane robocze.
- `clients/<domena>/history/YYYY-MM-DD.jsonl` - historia do filtrowania po kliencie, dacie i kampanii.
- `clients/<domena>/changes/YYYY-MM-DD.md` - czytelny dziennik zmian.
Narzedzie nie uzywa API modeli AI. Claude Code, Codex albo Gemini CLI moga uruchamiac te same komendy terminalowe.

View File

@@ -0,0 +1,52 @@
[clients."pomysloweprezenty.pl"]
google_ads_customer_id = "941-605-1782"
adspro_client_id = "2"
[clients."innsi.pl"]
google_ads_customer_id = "133-343-6346"
adspro_client_id = "5"
[clients."van-dam.pl"]
google_ads_customer_id = "570-658-4790"
[clients."investagd.pl"]
google_ads_customer_id = "229-855-5588"
adspro_client_id = "8"
[clients."wyprzedaze.pl"]
google_ads_customer_id = "775-249-3197"
adspro_client_id = "10"
[clients."laitica.pl"]
google_ads_customer_id = "262-567-7205"
adspro_client_id = "9"
[clients."studio-zoe.pl"]
google_ads_customer_id = "387-166-1050"
[clients."aruba.rzeszow.pl"]
google_ads_customer_id = "374-470-8609"
adspro_client_id = "3"
sales_history_sheet = "https://docs.google.com/spreadsheets/d/1tkT1WgOi41uj7D0Q8ZTD0qINsd11VVsd7G9Q7M8kAN8/"
seo_works_history_sheet = "https://docs.google.com/spreadsheets/d/1lle7nkl0ykkJMlo2eA8AuV7Sd705ia6bmh7RM38nsRg/"
seo_links_history_sheet = "https://docs.google.com/spreadsheets/d/1b4uCBzNSFFxIv2X1fTsqZcdDr7NZZYOIsmc9kLJqkq0/"
[clients."ibra-makeup.pl"]
google_ads_customer_id = "818-919-2566"
adspro_client_id = "4"
sales_history_sheet = "https://docs.google.com/spreadsheets/d/1OGqRluQgd2vCVxbmVLhPd00q8RWucSc0L4GdcGAl8vU"
[global_rules]
max_create_groups_without_extra_confirm = 100
max_pause_groups_without_extra_confirm = 100
[global_rules.pla_settings]
require_presence_only = true
require_high_priority = true
[global_rules.product_feed_optimization]
limit = 10
min_days_between_title_changes = 30
[global_rules.budget_usage]
min_days_between_budget_changes = 7

View File

@@ -1,20 +0,0 @@
[clients."example.pl"]
google_ads_customer_id = "123-456-7890"
adspro_client_id = "1"
[global_rules]
max_create_groups_without_extra_confirm = 100
max_pause_groups_without_extra_confirm = 100
[global_rules.pla_settings]
require_presence_only = true
require_high_priority = true
[global_rules.product_feed_optimization]
limit = 10
min_days_between_title_changes = 30
# Wyjatek per klient:
# [clients."example.pl".pla_settings]
# require_high_priority = false
# require_presence_only = true

View File

@@ -9,10 +9,6 @@ adspro_client_id = "5"
[clients."van-dam.pl"]
google_ads_customer_id = "570-658-4790"
[clients."sklep.ele-comp.pl"]
google_ads_customer_id = "489-092-9476"
adspro_client_id = "7"
[clients."investagd.pl"]
google_ads_customer_id = "229-855-5588"
adspro_client_id = "8"
@@ -35,6 +31,7 @@ adspro_client_id = "3"
[clients."ibra-makeup.pl"]
google_ads_customer_id = "818-919-2566"
adspro_client_id = "4"
sales_history_sheet = "https://docs.google.com/spreadsheets/d/1OGqRluQgd2vCVxbmVLhPd00q8RWucSc0L4GdcGAl8vU"
[global_rules]
max_create_groups_without_extra_confirm = 100
@@ -47,3 +44,6 @@ require_high_priority = true
[global_rules.product_feed_optimization]
limit = 10
min_days_between_title_changes = 30
[global_rules.budget_usage]
min_days_between_budget_changes = 7

View File

@@ -0,0 +1,78 @@
[[groups]]
id = "campaigns_structure"
name = "Ustawienia kampanii"
[[groups.tasks]]
id = "check_pla_settings"
name = "Sprawdzenie ustawien PLA"
description = "Sprawdza ustawienia lokalizacji i priorytetu kampanii PLA wedlug regul globalnych i wyjatkow klienta."
[[groups]]
id = "search_campaigns"
name = "Kampanie Search"
[[groups.tasks]]
id = "check_search_basic_settings"
name = "Sprawdzenie podstawowych ustawien Search"
description = "Sprawdza podstawowe ustawienia kampanii Search i przygotowuje korekty: lokalizacja Obecnosc, wylaczona siec reklamowa oraz wylaczeni partnerzy wyszukiwania."
[[groups]]
id = "measurement_conversions"
name = "Pomiar i konwersje"
[[groups.tasks]]
id = "check_conversion_tracking"
name = "Sprawdzenie pomiaru konwersji"
description = "Pobiera akcje konwersji z Google Ads, sprawdza dane i wartosci oraz proponuje wlaczenie roznych wartosci konwersji dla e-commerce."
[[groups]]
id = "product_campaigns"
name = "Kampanie produktowe"
[[groups.tasks]]
id = "sync_pla_cl1"
name = "Synchronizacja kampanii PLA_CL1"
description = "Porownuje kampanie [PLA_CL1] z produktami w adsPRO i przygotowuje plan zmian grup reklam."
[[groups.tasks]]
id = "optimize_shopping_troas_ag"
name = "Automatyzacja tROAS per grupa reklam PLA"
description = "Analizuje Standard Shopping PLA z ostatnich 30 dni i przygotowuje plan stopniowej zmiany tROAS na poziomie grup reklam."
[[groups]]
id = "products_feed_shopping"
name = "Produkty, feed i Shopping"
[[groups.tasks]]
id = "optimize_product_titles"
name = "Optymalizacja tytulow produktow"
description = "Pobiera produkty z adsPRO i przygotowuje plan optymalizacji tytulow produktow."
[[groups.tasks]]
id = "optimize_product_categories"
name = "Optymalizacja kategorii Google"
description = "Pobiera produkty z adsPRO bez kategorii Google i przygotowuje plan decyzji agenta AI."
[[groups.tasks]]
id = "fill_product_unit_pricing"
name = "Uzupelnienie unit pricing"
description = "Pobiera produkty z adsPRO bez unit pricing i przygotowuje plan uzupelnienia miary oraz miary bazowej."
[[groups]]
id = "budget_bidding_alerts"
name = "Budzety, stawki i alerty"
[[groups.tasks]]
id = "check_budget_usage"
name = "Sprawdzenie wykorzystania budzetu"
description = "Sprawdza tygodniowe wykorzystanie budzetow, kampanie ograniczone budzetem i ryzyko zbyt szybkiego albo zbyt wolnego wydawania srodkow."
[[groups.tasks]]
id = "check_bidding_strategies"
name = "Sprawdzenie strategii stawek"
description = "Sprawdza strategie ustalania stawek, cele Docelowy ROAS/Docelowy CPA, wolumen konwersji i ryzyko zbyt szybkich zmian."
[[groups.tasks]]
id = "check_account_anomalies"
name = "Sprawdzenie anomalii konta"
description = "Sprawdza nagle spadki i wzrosty kosztu, klikniec, konwersji, wartosci konwersji, CTR, CPC i ROAS na poziomie kampanii."

View File

@@ -1,20 +1,25 @@
[[groups]]
id = "pla"
name = "Kampanie PLA"
id = "campaigns_structure"
name = "Kampanie i struktura"
[[groups.tasks]]
id = "sync_pla_cl1"
name = "Synchronizacja kampanii PLA_CL1"
description = "Porownuje kampanie [PLA_CL1] z produktami w adsPRO i przygotowuje plan zmian grup reklam."
[[groups.tasks]]
id = "optimize_shopping_troas_ag"
name = "Automatyzacja tROAS per grupa reklam PLA"
description = "Analizuje Standard Shopping PLA z ostatnich 30 dni i przygotowuje plan stopniowej zmiany tROAS na poziomie grup reklam."
[[groups.tasks]]
id = "check_pla_settings"
name = "Sprawdzenie ustawien"
name = "Sprawdzenie ustawien PLA"
description = "Sprawdza ustawienia lokalizacji i priorytetu kampanii PLA wedlug regul globalnych i wyjatkow klienta."
[[groups]]
id = "products"
name = "Produkty"
id = "products_feed_shopping"
name = "Produkty, feed i Shopping"
[[groups.tasks]]
id = "optimize_product_titles"
@@ -30,3 +35,21 @@ description = "Pobiera produkty z adsPRO bez kategorii Google i przygotowuje pla
id = "fill_product_unit_pricing"
name = "Uzupelnienie unit pricing"
description = "Pobiera produkty z adsPRO bez unit pricing i przygotowuje plan uzupelnienia miary oraz miary bazowej."
[[groups]]
id = "budget_bidding_alerts"
name = "Budzety, stawki i alerty"
[[groups.tasks]]
id = "check_budget_usage"
name = "Sprawdzenie wykorzystania budzetu"
description = "Sprawdza tygodniowe wykorzystanie budzetow, kampanie ograniczone budzetem i ryzyko zbyt szybkiego albo zbyt wolnego wydawania srodkow."
[[groups.tasks]]
id = "check_bidding_strategies"
name = "Sprawdzenie strategii stawek"
description = "Sprawdza strategie ustalania stawek, cele Docelowy ROAS/Docelowy CPA, wolumen konwersji i ryzyko zbyt szybkich zmian."
[[groups.tasks]]
id = "check_account_anomalies"
name = "Sprawdzenie anomalii konta"
description = "Sprawdza nagle spadki i wzrosty kosztu, klikniec, konwersji, wartosci konwersji, CTR, CPC i ROAS na poziomie kampanii."

View File

@@ -0,0 +1,165 @@
[[groups]]
id = "campaigns_structure"
name = "Kampanie i struktura"
[[groups.tasks]]
id = "sync_pla_cl1"
name = "Synchronizacja kampanii PLA_CL1"
description = "Porownuje kampanie [PLA_CL1] z produktami w adsPRO i przygotowuje plan zmian grup reklam."
[[groups.tasks]]
id = "check_pla_settings"
name = "Sprawdzenie ustawien PLA"
description = "Sprawdza ustawienia lokalizacji i priorytetu kampanii PLA wedlug regul globalnych i wyjatkow klienta."
[[groups.tasks]]
id = "check_search_basic_settings"
name = "Sprawdzenie podstawowych ustawien Search"
description = "Sprawdza podstawowe ustawienia kampanii Search: lokalizacje, sieci, jezyki i inne proste ustawienia konfiguracyjne."
[[groups.tasks]]
id = "check_pmax_structure"
name = "Sprawdzenie struktury PMax"
description = "Sprawdza kampanie Performance Max, asset groups, feed, brand/non-brand i ryzyka kanibalizacji."
[[groups.tasks]]
id = "check_feed_merchant_quality"
name = "Sprawdzenie feedu i Merchant Center"
description = "Sprawdza jakosc feedu produktowego, potencjalne problemy Merchant Center, atrybuty produktow i ryzyka odrzucen."
[[groups.tasks]]
id = "check_shopping_product_statuses"
name = "Sprawdzenie statusow produktow Shopping"
description = "Sprawdza produkty niedostepne, odrzucone, ograniczone albo bez emisji w Shopping i PMax."
[[groups.tasks]]
id = "check_shopping_product_performance"
name = "Sprawdzenie wynikow produktow Shopping"
description = "Sprawdza wyniki produktow Shopping z ostatnich 30 dni: koszt, klikniecia, konwersje, wartosc, ROAS i CPA."
[[groups]]
id = "measurement_audiences"
name = "Pomiar, konwersje i odbiorcy"
[[groups.tasks]]
id = "check_conversion_tracking"
name = "Sprawdzenie pomiaru konwersji"
description = "Sprawdza, czy konto ma poprawnie ustawione konwersje, tagowanie, GA4/Google Ads i czy dane nadaja sie do optymalizacji kampanii."
[[groups.tasks]]
id = "check_conversion_action_performance"
name = "Sprawdzenie akcji konwersji"
description = "Sprawdza, ktore akcje konwersji generuja wynik w kampaniach i czy rozklad konwersji wymaga recznej oceny pomiaru."
[[groups.tasks]]
id = "check_remarketing_setup"
name = "Sprawdzenie remarketingu"
description = "Sprawdza podstawy remarketingu: listy odbiorcow, dynamiczny remarketing, tagowanie produktowe i ryzyka konfliktu z PMax."
[[groups.tasks]]
id = "check_gender_performance"
name = "Sprawdzenie plci odbiorcow"
description = "Sprawdza wyniki kampanii wedlug plci odbiorcow, bez dodawania wykluczen demograficznych i bez korekt stawek."
[[groups.tasks]]
id = "check_age_performance"
name = "Sprawdzenie wieku odbiorcow"
description = "Sprawdza wyniki kampanii wedlug przedzialow wieku odbiorcow, bez dodawania wykluczen demograficznych i bez korekt stawek."
[[groups]]
id = "traffic_keywords_landing"
name = "Ruch, slowa i strony docelowe"
[[groups.tasks]]
id = "check_search_terms"
name = "Analiza zapytan i wykluczen"
description = "Sprawdza zapytania uzytkownikow, niepasujacy ruch, broad match, frazy brand/non-brand i kandydatow do wykluczen."
[[groups.tasks]]
id = "check_ad_group_performance"
name = "Sprawdzenie grup reklam"
description = "Sprawdza koszt, klikniecia, konwersje, wartosc konwersji, ROAS, CPA i CTR na poziomie grup reklam."
[[groups.tasks]]
id = "check_keyword_statuses"
name = "Sprawdzenie statusow slow kluczowych"
description = "Sprawdza odrzucone, ograniczone, wstrzymane albo technicznie problematyczne slowa kluczowe."
[[groups.tasks]]
id = "check_keyword_quality_score"
name = "Sprawdzenie Wyniku Jakosci slow kluczowych"
description = "Sprawdza Wynik Jakosci slow kluczowych, jakosc reklamy, strone docelowa, przewidywany CTR i wyniki."
[[groups.tasks]]
id = "check_landing_page_performance"
name = "Sprawdzenie stron docelowych"
description = "Sprawdza wyniki stron docelowych: koszt, klikniecia, konwersje, wartosc konwersji, ROAS, CPA, CTR i wspolczynnik konwersji."
[[groups]]
id = "ads_assets_statuses"
name = "Reklamy, zasoby i statusy"
[[groups.tasks]]
id = "check_rsa_assets"
name = "Sprawdzenie reklam RSA i zasobow"
description = "Sprawdza reklamy RSA, naglowki, teksty, assety, DKI i podstawowe ryzyka kreacji."
[[groups.tasks]]
id = "check_ad_asset_statuses"
name = "Sprawdzenie statusow reklam i zasobow"
description = "Sprawdza odrzucone, ograniczone, wstrzymane albo oczekujace reklamy i zasoby."
[[groups]]
id = "settings_segments_auctions"
name = "Ustawienia, segmenty i aukcje"
[[groups.tasks]]
id = "check_campaign_locations"
name = "Sprawdzenie lokalizacji kampanii"
description = "Sprawdza lokalizacje, wykluczone lokalizacje i tryb kierowania lokalizacja w kampaniach."
[[groups.tasks]]
id = "check_campaign_networks"
name = "Sprawdzenie sieci kampanii"
description = "Sprawdza ustawienia sieci kampanii: Google Search, partnerow wyszukiwania i siec reklamowa."
[[groups.tasks]]
id = "check_campaign_languages"
name = "Sprawdzenie jezykow kampanii"
description = "Sprawdza ustawienia jezykow kampanii i oznacza kampanie wymagajace recznej oceny dopasowania jezyka do rynku klienta."
[[groups.tasks]]
id = "check_ad_schedules"
name = "Sprawdzenie harmonogramu reklam"
description = "Sprawdza harmonogram emisji reklam, kampanie dzialajace 24/7 i nietypowe godziny emisji."
[[groups.tasks]]
id = "check_device_performance"
name = "Sprawdzenie urzadzen"
description = "Sprawdza wyniki wedlug urzadzen: komputer, telefon i tablet, pokazujac koszt, konwersje, wartosc konwersji, ROAS, CPA i udzial kosztu."
[[groups.tasks]]
id = "check_day_of_week_performance"
name = "Sprawdzenie dni tygodnia"
description = "Sprawdza wyniki wedlug dni tygodnia z ostatnich 30 dni: koszt, klikniecia, konwersje, wartosc konwersji, ROAS i CPA."
[[groups.tasks]]
id = "check_hour_of_day_performance"
name = "Sprawdzenie godzin dnia"
description = "Sprawdza wyniki wedlug godzin dnia z ostatnich 30 dni, aby wskazac godziny wymagajace oceny."
[[groups.tasks]]
id = "check_network_performance"
name = "Sprawdzenie efektywnosci sieci"
description = "Sprawdza realne wyniki wedlug sieci emisji, np. Search, partnerzy, Display i Shopping."
[[groups.tasks]]
id = "check_impression_share"
name = "Sprawdzenie udzialu w wyswietleniach"
description = "Sprawdza udzial w wyswietleniach, utrate przez budzet i utrate przez ranking na poziomie kampanii."
[[groups.tasks]]
id = "check_auction_insights"
name = "Sprawdzenie Auction Insights"
description = "Sprawdza konkurentow w aukcji, overlap rate, outranking share, position above rate oraz top i absolute top rate."

View File

@@ -1,3 +0,0 @@
google-ads>=25.0.0
requests>=2.31.0

View File

@@ -0,0 +1,803 @@
#!/usr/bin/env python3
"""
Pobiera dane z Google Ads API + GA4 za wskazany miesiąc i zapisuje jako JSON.
Użycie:
python scripts/reports/fetch_monthly_report_data.py --customer studio-zoe.pl --month 2026-02
python scripts/reports/fetch_monthly_report_data.py --customer 3871661050 --month 2026-02 --output output/report.json
"""
import argparse
import calendar
import csv
import json
import os
import re
import sys
import io
import tomllib
from datetime import datetime, timedelta
from pathlib import Path
from urllib.parse import parse_qs, urlparse
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
sys.path.insert(0, str(Path(__file__).parent.parent))
from lib.gads_client import get_client, get_customer_id, run_query
import requests
ROOT = Path(__file__).parent.parent.parent
sys.path.insert(0, str(ROOT))
from src.gads_v2.config import load_env
load_env(ROOT / ".env")
def load_client_report_config(domain):
"""Load scalar report settings for a client from config/clients.toml."""
config_path = ROOT / "config" / "clients.toml"
if not config_path.exists():
return {}
data = tomllib.loads(config_path.read_text(encoding="utf-8"))
return data.get("clients", {}).get(domain, {})
def parse_month(month_str):
"""Parse YYYY-MM to (year, month) and calculate date range."""
year, month = map(int, month_str.split("-"))
last_day = calendar.monthrange(year, month)[1]
start = f"{year}-{month:02d}-01"
end = f"{year}-{month:02d}-{last_day:02d}"
return year, month, start, end
def prev_month(year, month):
"""Calculate previous month's date range."""
if month == 1:
py, pm = year - 1, 12
else:
py, pm = year, month - 1
last_day = calendar.monthrange(py, pm)[1]
start = f"{py}-{pm:02d}-01"
end = f"{py}-{pm:02d}-{last_day:02d}"
return py, pm, start, end
def pct_change(current, previous):
"""Calculate percentage change, handling zero division."""
if previous == 0:
return 100.0 if current > 0 else 0.0
return round(((current - previous) / previous) * 100, 1)
def normalize_header(value):
value = (value or "").strip().lower()
replacements = {
"ą": "a",
"ć": "c",
"ę": "e",
"ł": "l",
"ń": "n",
"ó": "o",
"ś": "s",
"ź": "z",
"ż": "z",
}
for src, dst in replacements.items():
value = value.replace(src, dst)
return re.sub(r"[^a-z0-9]+", "", value)
def parse_money(value):
text = str(value or "").strip()
if not text:
return 0.0
text = text.replace("PLN", "").replace("zl", "").replace("", "")
text = text.replace("\u00a0", " ").replace(" ", "")
if "," in text and "." in text:
text = text.replace(".", "").replace(",", ".")
elif "," in text:
text = text.replace(",", ".")
text = re.sub(r"[^0-9.\-]", "", text)
return round(float(text), 2) if text else 0.0
def parse_int_value(value):
return int(round(parse_money(value)))
def parse_history_month(value):
text = str(value or "").strip()
if not text:
return ""
if re.fullmatch(r"\d{4}-\d{2}", text):
return text
if re.fullmatch(r"\d{2}[.-]\d{4}", text):
month, year = re.split(r"[.-]", text)
return f"{int(year):04d}-{int(month):02d}"
if re.fullmatch(r"\d{4}[./-]\d{1,2}[./-]\d{1,2}", text):
year, month, _day = re.split(r"[./-]", text)
return f"{int(year):04d}-{int(month):02d}"
if re.fullmatch(r"\d{1,2}[./-]\d{1,2}[./-]\d{4}", text):
_day, month, year = re.split(r"[./-]", text)
return f"{int(year):04d}-{int(month):02d}"
return text
def parse_sheet_config(sheet_config):
value = str(sheet_config or "").strip()
if not value:
return "", "0"
if value.startswith("http"):
parsed = urlparse(value)
match = re.search(r"/spreadsheets/d/([^/]+)", parsed.path)
spreadsheet_id = match.group(1) if match else value
query_gid = parse_qs(parsed.query).get("gid", [None])[0]
fragment_gid = parse_qs(parsed.fragment).get("gid", [None])[0]
return spreadsheet_id, query_gid or fragment_gid or ""
if ":" in value:
return value.split(":", 1)
return value, ""
def fetch_sales_history_from_sheet(domain, sheet_config):
"""Fetch monthly sales history from a public Google Sheet CSV export."""
spreadsheet_id, gid = parse_sheet_config(sheet_config)
export_url = f"https://docs.google.com/spreadsheets/d/{spreadsheet_id}/gviz/tq?tqx=out:csv"
if gid:
export_url += f"&gid={gid}"
response = requests.get(export_url, timeout=30)
response.raise_for_status()
response.encoding = "utf-8"
reader = csv.DictReader(io.StringIO(response.text))
history = []
for row in reader:
normalized = {normalize_header(key): value for key, value in row.items()}
month = parse_history_month(
normalized.get("month")
or normalized.get("miesiac")
or normalized.get("data")
or normalized.get("date")
)
revenue = parse_money(
normalized.get("revenue")
or normalized.get("przychod")
or normalized.get("przychody")
or normalized.get("sprzedaz")
or normalized.get("wartosc")
)
transactions = parse_int_value(
normalized.get("transactions")
or normalized.get("transakcje")
or normalized.get("zamowienia")
or normalized.get("orders")
)
if not month or not revenue:
continue
aov = parse_money(
normalized.get("aov")
or normalized.get("sredniakoszyka")
or normalized.get("sredniawartosckoszyka")
or normalized.get("sredniawartosczamowienia")
)
if not aov and transactions:
aov = round(revenue / transactions, 2)
history.append({
"month": month,
"transactions": transactions,
"revenue": revenue,
"aov": aov,
"source": "google_sheet",
})
return sorted(history, key=lambda item: item["month"])
def apply_sheet_ecommerce(report, sales_history, month, previous_month):
"""Use Google Sheet sales data for e-commerce KPI cards."""
by_month = {row["month"]: row for row in sales_history}
current = by_month.get(month)
if not current:
return False
previous = by_month.get(previous_month, {"transactions": 0, "revenue": 0.0, "aov": 0.0})
has_previous = previous_month in by_month
ecommerce = (report.get("ga4") or {}).get("ecommerce") or {}
ecommerce["current"] = {
"transactions": current.get("transactions", 0),
"revenue": current.get("revenue", 0.0),
"aov": current.get("aov", 0.0),
}
ecommerce["previous"] = {
"transactions": previous.get("transactions", 0),
"revenue": previous.get("revenue", 0.0),
"aov": previous.get("aov", 0.0),
}
ecommerce["mom_change"] = {
"transactions_pct": pct_change(ecommerce["current"]["transactions"], ecommerce["previous"]["transactions"]) if has_previous else None,
"revenue_pct": pct_change(ecommerce["current"]["revenue"], ecommerce["previous"]["revenue"]) if has_previous else None,
"aov_pct": pct_change(ecommerce["current"]["aov"], ecommerce["previous"]["aov"]) if has_previous else None,
}
ecommerce["source"] = "google_sheet"
if report.get("ga4") is None:
report["ga4"] = {}
report["ga4"]["ecommerce"] = ecommerce
return True
def fetch_google_ads_data(client, customer_id, start_date, end_date):
"""Fetch campaign metrics for a date range."""
query = f"""
SELECT campaign.id, campaign.name, campaign.status,
campaign.advertising_channel_type,
metrics.impressions, metrics.clicks,
metrics.cost_micros, metrics.conversions,
metrics.conversions_value,
metrics.ctr, metrics.average_cpc
FROM campaign
WHERE segments.date BETWEEN '{start_date}' AND '{end_date}'
AND campaign.status != 'REMOVED'
"""
rows = run_query(client, customer_id, query)
campaigns = {}
for r in rows:
cid = str(r.campaign.id)
if cid not in campaigns:
campaigns[cid] = {
"id": cid,
"name": r.campaign.name,
"status": r.campaign.status.name,
"type": r.campaign.advertising_channel_type.name,
"impressions": 0, "clicks": 0, "cost": 0.0,
"conversions": 0.0, "conversion_value": 0.0,
"ctr": 0.0, "cpc": 0.0,
}
c = campaigns[cid]
c["impressions"] += r.metrics.impressions
c["clicks"] += r.metrics.clicks
c["cost"] += r.metrics.cost_micros / 1_000_000
c["conversions"] += r.metrics.conversions
c["conversion_value"] += r.metrics.conversions_value
# Calculate derived metrics
for c in campaigns.values():
c["cost"] = round(c["cost"], 2)
c["conversions"] = round(c["conversions"], 1)
c["conversion_value"] = round(c["conversion_value"], 2)
c["ctr"] = round((c["clicks"] / c["impressions"] * 100) if c["impressions"] else 0, 2)
c["cpc"] = round((c["cost"] / c["clicks"]) if c["clicks"] else 0, 2)
c["cpa"] = round((c["cost"] / c["conversions"]) if c["conversions"] else 0, 2)
c["roas"] = round((c["conversion_value"] / c["cost"]) if c["cost"] else 0, 2)
return list(campaigns.values())
def calc_totals(campaigns):
"""Sum up totals across campaigns."""
t = {"impressions": 0, "clicks": 0, "cost": 0.0, "conversions": 0.0, "conversion_value": 0.0}
for c in campaigns:
t["impressions"] += c["impressions"]
t["clicks"] += c["clicks"]
t["cost"] += c["cost"]
t["conversions"] += c["conversions"]
t["conversion_value"] += c.get("conversion_value", 0.0)
t["cost"] = round(t["cost"], 2)
t["conversions"] = round(t["conversions"], 1)
t["conversion_value"] = round(t["conversion_value"], 2)
t["ctr"] = round((t["clicks"] / t["impressions"] * 100) if t["impressions"] else 0, 2)
t["cpc"] = round((t["cost"] / t["clicks"]) if t["clicks"] else 0, 2)
t["cpa"] = round((t["cost"] / t["conversions"]) if t["conversions"] else 0, 2)
t["roas"] = round((t["conversion_value"] / t["cost"]) if t["cost"] else 0, 2)
return t
def fetch_daily_data(client, customer_id, start_date, end_date):
"""Fetch daily breakdown for charts."""
query = f"""
SELECT segments.date,
metrics.impressions, metrics.clicks, metrics.cost_micros
FROM campaign
WHERE segments.date BETWEEN '{start_date}' AND '{end_date}'
AND campaign.status != 'REMOVED'
"""
rows = run_query(client, customer_id, query)
daily = {}
for r in rows:
d = r.segments.date
if d not in daily:
daily[d] = {"date": d, "impressions": 0, "clicks": 0, "cost": 0.0}
daily[d]["impressions"] += r.metrics.impressions
daily[d]["clicks"] += r.metrics.clicks
daily[d]["cost"] += r.metrics.cost_micros / 1_000_000
result = sorted(daily.values(), key=lambda x: x["date"])
for d in result:
d["cost"] = round(d["cost"], 2)
return result
def fetch_search_terms(client, customer_id, start_date, end_date, limit=15):
"""Fetch top search terms by clicks."""
query = f"""
SELECT search_term_view.search_term,
metrics.impressions, metrics.clicks,
metrics.cost_micros, metrics.conversions
FROM search_term_view
WHERE segments.date BETWEEN '{start_date}' AND '{end_date}'
ORDER BY metrics.clicks DESC
LIMIT {limit}
"""
rows = run_query(client, customer_id, query)
terms = []
for r in rows:
clicks = r.metrics.clicks
impressions = r.metrics.impressions
terms.append({
"term": r.search_term_view.search_term,
"impressions": impressions,
"clicks": clicks,
"cost": round(r.metrics.cost_micros / 1_000_000, 2),
"conversions": round(r.metrics.conversions, 1),
"ctr": round((clicks / impressions * 100) if impressions else 0, 2),
})
return terms
def fetch_ga4_data(property_id, start_date, end_date, prev_start, prev_end):
"""Fetch GA4 data: sessions, users, traffic sources, devices."""
from google.oauth2.credentials import Credentials
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
RunReportRequest, DateRange, Metric, Dimension, OrderBy,
)
credentials = Credentials(
token=None,
refresh_token=os.environ["GA4_REFRESH_TOKEN"],
client_id=os.environ["GOOGLE_ADS_OAUTH2_CLIENT_ID"],
client_secret=os.environ["GOOGLE_ADS_OAUTH2_CLIENT_SECRET"],
token_uri="https://oauth2.googleapis.com/token",
)
client = BetaAnalyticsDataClient(credentials=credentials)
prop = f"properties/{property_id}"
# 1. Sessions & Users (current + previous month)
def get_totals(sd, ed):
resp = client.run_report(RunReportRequest(
property=prop,
date_ranges=[DateRange(start_date=sd, end_date=ed)],
metrics=[
Metric(name="sessions"),
Metric(name="totalUsers"),
Metric(name="newUsers"),
Metric(name="screenPageViews"),
Metric(name="averageSessionDuration"),
Metric(name="bounceRate"),
],
))
row = resp.rows[0] if resp.rows else None
if not row:
return {"sessions": 0, "users": 0, "new_users": 0, "pageviews": 0, "avg_duration": 0, "bounce_rate": 0}
return {
"sessions": int(row.metric_values[0].value),
"users": int(row.metric_values[1].value),
"new_users": int(row.metric_values[2].value),
"pageviews": int(row.metric_values[3].value),
"avg_duration": round(float(row.metric_values[4].value), 1),
"bounce_rate": round(float(row.metric_values[5].value) * 100, 1),
}
current = get_totals(start_date, end_date)
previous = get_totals(prev_start, prev_end)
# 2. Traffic sources
resp = client.run_report(RunReportRequest(
property=prop,
date_ranges=[DateRange(start_date=start_date, end_date=end_date)],
dimensions=[Dimension(name="sessionSourceMedium")],
metrics=[Metric(name="sessions")],
order_bys=[OrderBy(metric=OrderBy.MetricOrderBy(metric_name="sessions"), desc=True)],
limit=10,
))
sources = []
for row in resp.rows:
sources.append({
"source_medium": row.dimension_values[0].value,
"sessions": int(row.metric_values[0].value),
})
# 3. Devices
resp = client.run_report(RunReportRequest(
property=prop,
date_ranges=[DateRange(start_date=start_date, end_date=end_date)],
dimensions=[Dimension(name="deviceCategory")],
metrics=[Metric(name="sessions")],
order_bys=[OrderBy(metric=OrderBy.MetricOrderBy(metric_name="sessions"), desc=True)],
))
devices = []
for row in resp.rows:
devices.append({
"device": row.dimension_values[0].value,
"sessions": int(row.metric_values[0].value),
})
# 4. Daily sessions (for chart)
resp = client.run_report(RunReportRequest(
property=prop,
date_ranges=[DateRange(start_date=start_date, end_date=end_date)],
dimensions=[Dimension(name="date")],
metrics=[Metric(name="sessions"), Metric(name="totalUsers")],
order_bys=[OrderBy(dimension=OrderBy.DimensionOrderBy(dimension_name="date"))],
))
daily_sessions = []
for row in resp.rows:
raw = row.dimension_values[0].value
formatted = f"{raw[:4]}-{raw[4:6]}-{raw[6:]}"
daily_sessions.append({
"date": formatted,
"sessions": int(row.metric_values[0].value),
"users": int(row.metric_values[1].value),
})
return {
"current": current,
"previous": previous,
"mom_change": {
"sessions_pct": pct_change(current["sessions"], previous["sessions"]),
"users_pct": pct_change(current["users"], previous["users"]),
"new_users_pct": pct_change(current["new_users"], previous["new_users"]),
"pageviews_pct": pct_change(current["pageviews"], previous["pageviews"]),
"avg_duration_pct": pct_change(current["avg_duration"], previous["avg_duration"]),
"bounce_rate_pct": pct_change(current["bounce_rate"], previous["bounce_rate"]),
},
"sources": sources,
"devices": devices,
"daily": daily_sessions,
}
def fetch_ga4_ecommerce(property_id, start_date, end_date, prev_start, prev_end):
"""Fetch GA4 e-commerce data: transactions, revenue, AOV."""
from google.oauth2.credentials import Credentials
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
RunReportRequest, DateRange, Metric, Dimension, OrderBy,
)
credentials = Credentials(
token=None,
refresh_token=os.environ["GA4_REFRESH_TOKEN"],
client_id=os.environ["GOOGLE_ADS_OAUTH2_CLIENT_ID"],
client_secret=os.environ["GOOGLE_ADS_OAUTH2_CLIENT_SECRET"],
token_uri="https://oauth2.googleapis.com/token",
)
client = BetaAnalyticsDataClient(credentials=credentials)
prop = f"properties/{property_id}"
def get_ecom(sd, ed):
resp = client.run_report(RunReportRequest(
property=prop,
date_ranges=[DateRange(start_date=sd, end_date=ed)],
metrics=[
Metric(name="transactions"),
Metric(name="purchaseRevenue"),
Metric(name="averagePurchaseRevenue"),
],
))
row = resp.rows[0] if resp.rows else None
if not row:
return {"transactions": 0, "revenue": 0.0, "aov": 0.0}
return {
"transactions": int(row.metric_values[0].value),
"revenue": round(float(row.metric_values[1].value), 2),
"aov": round(float(row.metric_values[2].value), 2),
}
current = get_ecom(start_date, end_date)
previous = get_ecom(prev_start, prev_end)
# Daily revenue chart
resp = client.run_report(RunReportRequest(
property=prop,
date_ranges=[DateRange(start_date=start_date, end_date=end_date)],
dimensions=[Dimension(name="date")],
metrics=[Metric(name="purchaseRevenue"), Metric(name="transactions")],
order_bys=[OrderBy(dimension=OrderBy.DimensionOrderBy(dimension_name="date"))],
))
daily_revenue = []
for row in resp.rows:
raw = row.dimension_values[0].value
formatted = f"{raw[:4]}-{raw[4:6]}-{raw[6:]}"
daily_revenue.append({
"date": formatted,
"revenue": round(float(row.metric_values[0].value), 2),
"transactions": int(row.metric_values[1].value),
})
# Revenue by source
resp = client.run_report(RunReportRequest(
property=prop,
date_ranges=[DateRange(start_date=start_date, end_date=end_date)],
dimensions=[Dimension(name="sessionSourceMedium")],
metrics=[Metric(name="purchaseRevenue"), Metric(name="transactions")],
order_bys=[OrderBy(metric=OrderBy.MetricOrderBy(metric_name="purchaseRevenue"), desc=True)],
limit=10,
))
revenue_by_source = []
for row in resp.rows:
revenue_by_source.append({
"source_medium": row.dimension_values[0].value,
"revenue": round(float(row.metric_values[0].value), 2),
"transactions": int(row.metric_values[1].value),
})
# Top products by revenue
resp = client.run_report(RunReportRequest(
property=prop,
date_ranges=[DateRange(start_date=start_date, end_date=end_date)],
dimensions=[Dimension(name="itemName")],
metrics=[
Metric(name="itemRevenue"),
Metric(name="itemsPurchased"),
],
order_bys=[OrderBy(metric=OrderBy.MetricOrderBy(metric_name="itemRevenue"), desc=True)],
limit=10,
))
top_products = []
for row in resp.rows:
top_products.append({
"name": row.dimension_values[0].value,
"revenue": round(float(row.metric_values[0].value), 2),
"quantity": int(row.metric_values[1].value),
})
return {
"current": current,
"previous": previous,
"mom_change": {
"transactions_pct": pct_change(current["transactions"], previous["transactions"]),
"revenue_pct": pct_change(current["revenue"], previous["revenue"]),
"aov_pct": pct_change(current["aov"], previous["aov"]),
},
"daily": daily_revenue,
"revenue_by_source": revenue_by_source,
"top_products": top_products,
}
def main():
parser = argparse.ArgumentParser(description="Pobierz dane do raportu miesięcznego")
parser.add_argument("--customer", required=True, help="Domena lub Google Ads customer ID")
parser.add_argument("--month", required=True, help="Miesiąc raportu (YYYY-MM)")
parser.add_argument("--output", help="Ścieżka do pliku JSON")
parser.add_argument("--ga4-property", help="GA4 Property ID (domyślnie z .env)")
parser.add_argument("--skip-ga4", action="store_true", help="Pomiń dane GA4")
args = parser.parse_args()
customer_id = get_customer_id(args.customer)
client = get_client(use_proto_plus=True)
year, month, start_date, end_date = parse_month(args.month)
py, pm, prev_start, prev_end = prev_month(year, month)
month_names_pl = {
1: "Styczeń", 2: "Luty", 3: "Marzec", 4: "Kwiecień",
5: "Maj", 6: "Czerwiec", 7: "Lipiec", 8: "Sierpień",
9: "Wrzesień", 10: "Październik", 11: "Listopad", 12: "Grudzień",
}
# Resolve domain name for output
domain = args.customer if not args.customer.replace("-", "").isdigit() else args.customer
print(f"Pobieram dane Google Ads: {domain} za {args.month}...")
# Google Ads data
campaigns = fetch_google_ads_data(client, customer_id, start_date, end_date)
prev_campaigns = fetch_google_ads_data(client, customer_id, prev_start, prev_end)
totals = calc_totals(campaigns)
prev_totals = calc_totals(prev_campaigns)
daily = fetch_daily_data(client, customer_id, start_date, end_date)
search_terms = fetch_search_terms(client, customer_id, start_date, end_date)
mom_change = {
"impressions_pct": pct_change(totals["impressions"], prev_totals["impressions"]),
"clicks_pct": pct_change(totals["clicks"], prev_totals["clicks"]),
"cost_pct": pct_change(totals["cost"], prev_totals["cost"]),
"conversions_pct": pct_change(totals["conversions"], prev_totals["conversions"]),
"conversion_value_pct": pct_change(totals["conversion_value"], prev_totals["conversion_value"]),
"ctr_pct": pct_change(totals["ctr"], prev_totals["ctr"]),
"cpc_pct": pct_change(totals["cpc"], prev_totals["cpc"]),
"cpa_pct": pct_change(totals["cpa"], prev_totals["cpa"]),
"roas_pct": pct_change(totals["roas"], prev_totals["roas"]),
}
report = {
"client": domain,
"month": args.month,
"month_name": month_names_pl[month],
"year": year,
"prev_month": f"{py}-{pm:02d}",
"prev_month_name": month_names_pl[pm],
"generated_at": datetime.now().isoformat(),
"google_ads": {
"campaigns": campaigns,
"totals": totals,
"prev_totals": prev_totals,
"mom_change": mom_change,
"daily": daily,
"search_terms": search_terms,
},
}
# GA4 data
if not args.skip_ga4:
ga4_property = args.ga4_property
if not ga4_property:
# Try to find GA4 property in .env
env_key = f"GA4_PROPERTY_ID_{domain}"
ga4_property = os.environ.get(env_key)
if ga4_property:
print(f"Pobieram dane GA4 (property: {ga4_property})...")
try:
ga4 = fetch_ga4_data(ga4_property, start_date, end_date, prev_start, prev_end)
report["ga4"] = ga4
print(f" GA4: {ga4['current']['sessions']} sesji, {ga4['current']['users']} uzytkownikow")
except Exception as e:
print(f" UWAGA: Blad GA4: {e}")
report["ga4"] = None
else:
print(f" Brak GA4 Property ID w .env ({env_key}) - pomijam GA4")
report["ga4"] = None
else:
report["ga4"] = None
# Semstorm SEO data
semstorm_login = os.environ.get("SEMSTORM_LOGIN", "")
if semstorm_login:
print(f"Pobieram dane Semstorm...")
try:
sys.path.insert(0, str(Path(__file__).parent))
from fetch_semstorm_data import fetch_domain_stats
semstorm = fetch_domain_stats(domain, args.month)
report["semstorm"] = semstorm
if semstorm and semstorm.get("current"):
cur = semstorm["current"]
print(f" Semstorm: TOP3={cur['top3']}, TOP10={cur['top10']}, TOP50={cur['top50']}, traffic={cur['traffic']}")
except Exception as e:
print(f" UWAGA: Blad Semstorm: {e}")
report["semstorm"] = None
else:
report["semstorm"] = None
# E-commerce data: Shoper (primary) or GA4 (fallback)
shoper_key = f"SHOPER_API_URL_{domain}"
if os.environ.get(shoper_key):
print(f"Pobieram dane e-commerce ze Shoper...")
try:
from fetch_shoper_data import fetch_shoper_ecommerce
shoper_ecom = fetch_shoper_ecommerce(domain, args.month, f"{py}-{pm:02d}")
if shoper_ecom and shoper_ecom["current"]["transactions"] > 0:
# Get revenue_by_source and top_products from GA4
if report.get("ga4") and ga4_property:
try:
ga4_ecom = fetch_ga4_ecommerce(ga4_property, start_date, end_date, prev_start, prev_end)
if ga4_ecom:
shoper_ecom["revenue_by_source"] = ga4_ecom.get("revenue_by_source", [])
shoper_ecom["top_products"] = ga4_ecom.get("top_products", [])
except Exception as e:
print(f" UWAGA: GA4 revenue_by_source/top_products: {e}")
shoper_ecom["revenue_by_source"] = []
shoper_ecom["top_products"] = []
if report.get("ga4") is None:
report["ga4"] = {}
report["ga4"]["ecommerce"] = shoper_ecom
cur = shoper_ecom["current"]
print(f" Shoper: {cur['transactions']} zamówień, {cur['revenue']:.2f} PLN, AOV {cur['aov']:.2f} PLN")
else:
if report.get("ga4"):
report["ga4"]["ecommerce"] = None
except Exception as e:
print(f" UWAGA: Blad Shoper: {e}")
if report.get("ga4"):
report["ga4"]["ecommerce"] = None
elif report.get("ga4") and ga4_property:
print(f"Pobieram dane GA4 e-commerce...")
try:
ecom = fetch_ga4_ecommerce(ga4_property, start_date, end_date, prev_start, prev_end)
if ecom and ecom["current"]["transactions"] > 0:
report["ga4"]["ecommerce"] = ecom
cur = ecom["current"]
print(f" E-commerce (GA4): {cur['transactions']} transakcji, {cur['revenue']:.2f} PLN przychodu")
else:
report["ga4"]["ecommerce"] = None
except Exception as e:
print(f" UWAGA: Blad GA4 e-commerce: {e}")
if report.get("ga4"):
report["ga4"]["ecommerce"] = None
# Monthly sales history for chart. Prefer client Google Sheet when configured.
client_report_config = load_client_report_config(domain)
sales_history_sheet = client_report_config.get("sales_history_sheet") or os.environ.get(f"GSHEET_SALES_HISTORY_{domain}")
report_start = os.environ.get(f"REPORT_START_DATE_{domain}")
if sales_history_sheet:
try:
sales_history = fetch_sales_history_from_sheet(domain, sales_history_sheet)
if apply_sheet_ecommerce(report, sales_history, args.month, f"{py}-{pm:02d}"):
current_sheet = report["ga4"]["ecommerce"]["current"]
print(
f" E-commerce (Google Sheet): {current_sheet['transactions']} transakcji, "
f"{current_sheet['revenue']:.2f} PLN przychodu"
)
filtered = [e for e in sales_history if not report_start or e["month"] >= report_start]
report["sales_history"] = filtered
print(f" Historia sprzedaży z Google Sheet: {len(filtered)} miesięcy")
except Exception as e:
report["sales_history"] = []
print(f" UWAGA: Nie udalo sie pobrac historii sprzedazy z Google Sheet: {e}")
else:
ecom_data = report.get("ga4", {}).get("ecommerce") if report.get("ga4") else None
if ecom_data and ecom_data.get("current", {}).get("transactions", 0) > 0:
history_path = ROOT / "clients" / domain / "sales_history.json"
history_path.parent.mkdir(parents=True, exist_ok=True)
sales_history = []
if history_path.exists():
with open(history_path, "r", encoding="utf-8") as f:
sales_history = json.load(f)
cur_entry = {
"month": args.month,
"transactions": ecom_data["current"]["transactions"],
"revenue": ecom_data["current"]["revenue"],
"aov": ecom_data["current"]["aov"],
"source": ecom_data.get("source", "ga4"),
}
by_month = {e["month"]: e for e in sales_history}
by_month[args.month] = cur_entry
sales_history = sorted(by_month.values(), key=lambda x: x["month"])
with open(history_path, "w", encoding="utf-8") as f:
json.dump(sales_history, f, indent=2, ensure_ascii=False)
filtered = [e for e in sales_history if not report_start or e["month"] >= report_start]
report["sales_history"] = filtered
print(f" Historia sprzedaży: {len(filtered)} miesięcy zapisanych")
else:
report["sales_history"] = []
# SEO links from Google Sheets
seo_links_key = f"GSHEET_SEO_LINKS_{domain}"
if os.environ.get(seo_links_key):
print(f"Pobieram linki SEO...")
try:
from fetch_seo_links import fetch_seo_links, fetch_seo_activities
seo_links = fetch_seo_links(domain, args.month)
report["seo_links"] = seo_links or []
print(f" Linki SEO: {len(report['seo_links'])} w {args.month}")
# SEO activities (text box)
seo_act_key = f"GSHEET_SEO_ACTIVITIES_{domain}"
if os.environ.get(seo_act_key):
seo_activities = fetch_seo_activities(domain, args.month)
report["seo_activities"] = seo_activities
if seo_activities:
print(f" Działania SEO: {len(seo_activities)} znaków")
except Exception as e:
print(f" UWAGA: Blad SEO links: {e}")
report["seo_links"] = []
else:
report["seo_links"] = []
# Output
if args.output:
output_path = Path(args.output)
else:
output_path = ROOT / "scripts" / "reports" / "output" / f"{domain}_{args.month}.json"
output_path.parent.mkdir(parents=True, exist_ok=True)
with open(output_path, "w", encoding="utf-8") as f:
json.dump(report, f, ensure_ascii=False, indent=2)
print(f"\nZapisano: {output_path}")
print(f"Google Ads: {totals['clicks']} klikniec, {totals['conversions']} konwersji, {totals['cost']:.2f} PLN")
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,716 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Raport Kwiecień 2026 &mdash; Aruba Rzeszow</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>
<style>
:root {
--primary: #0d8b8b;
--primary-dark: #065a5a;
--primary-light: #e8f5f5;
--green: #27ae60;
--red: #e74c3c;
--gray: #6c757d;
--light-gray: #f8f9fa;
--border: #e9ecef;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
color: #333;
background: #f5f5f5;
line-height: 1.6;
}
.hero {
background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary) 60%, #10a5a5 100%);
color: white;
padding: 60px 40px;
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: 0; right: 0;
width: 50%;
height: 100%;
background: url("data:image/svg+xml,%3Csvg width='400' height='400' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cpattern id='grid' width='40' height='40' patternUnits='userSpaceOnUse'%3E%3Ccircle cx='20' cy='20' r='1.5' fill='rgba(255,255,255,0.15)'/%3E%3C/pattern%3E%3C/defs%3E%3Crect width='400' height='400' fill='url(%23grid)'/%3E%3Cline x1='20' y1='60' x2='100' y2='20' stroke='rgba(255,255,255,0.08)' stroke-width='1'/%3E%3Cline x1='100' y1='20' x2='180' y2='80' stroke='rgba(255,255,255,0.08)' stroke-width='1'/%3E%3Cline x1='180' y1='80' x2='260' y2='40' stroke='rgba(255,255,255,0.08)' stroke-width='1'/%3E%3Cline x1='260' y1='40' x2='340' y2='100' stroke='rgba(255,255,255,0.08)' stroke-width='1'/%3E%3Cline x1='60' y1='140' x2='140' y2='120' stroke='rgba(255,255,255,0.06)' stroke-width='1'/%3E%3Cline x1='140' y1='120' x2='220' y2='180' stroke='rgba(255,255,255,0.06)' stroke-width='1'/%3E%3Cline x1='220' y1='180' x2='300' y2='140' stroke='rgba(255,255,255,0.06)' stroke-width='1'/%3E%3Cline x1='300' y1='140' x2='380' y2='200' stroke='rgba(255,255,255,0.06)' stroke-width='1'/%3E%3C/svg%3E") repeat;
opacity: 0.7;
}
.hero-content {
max-width: 1400px;
margin: 0 auto;
position: relative;
z-index: 1;
}
.logo {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 50px;
}
.logo svg {
height: 40px;
}
.logo-text {
font-size: 22px;
font-weight: 700;
letter-spacing: 3px;
text-transform: uppercase;
}
.logo-subtitle {
font-size: 11px;
letter-spacing: 2px;
opacity: 0.85;
text-transform: lowercase;
}
.hero h1 {
font-size: 42px;
font-weight: 700;
line-height: 1.2;
margin-bottom: 16px;
}
.hero .meta {
font-size: 18px;
opacity: 0.9;
}
.container {
max-width: 1400px;
margin: 0 auto;
padding: 0 20px;
}
.report-section {
background: white;
border-radius: 12px;
padding: 32px;
margin: 24px auto;
max-width: 1400px;
box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}
.section-title {
color: var(--primary-dark);
font-size: 24px;
font-weight: 700;
margin-bottom: 24px;
padding-bottom: 12px;
border-bottom: 3px solid var(--primary);
}
.kpi-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
gap: 16px;
margin-bottom: 32px;
}
.kpi-card {
background: var(--light-gray);
border-radius: 10px;
padding: 20px;
text-align: center;
border: 1px solid var(--border);
}
.kpi-label {
font-size: 12px;
color: var(--primary);
text-transform: uppercase;
font-weight: 600;
letter-spacing: 0.5px;
margin-bottom: 8px;
}
.kpi-value {
font-size: 28px;
font-weight: 700;
color: #2c3e50;
white-space: nowrap;
}
.kpi-unit {
font-size: 14px;
font-weight: 400;
color: var(--gray);
}
.kpi-change {
font-size: 13px;
margin-top: 6px;
font-weight: 500;
}
.chart-container {
margin: 24px 0;
}
.chart-container h3 {
color: var(--primary-dark);
margin-bottom: 12px;
font-size: 16px;
}
.chart-container canvas {
max-height: 300px;
}
.data-table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
}
.data-table thead {
background: var(--primary);
color: white;
}
.data-table th {
padding: 10px 12px;
text-align: left;
font-weight: 600;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.data-table td {
padding: 10px 12px;
border-bottom: 1px solid var(--border);
}
.data-table tbody tr:hover {
background: var(--primary-light);
}
.data-table .num {
text-align: right;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
.badge {
display: inline-block;
padding: 2px 8px;
border-radius: 4px;
font-size: 11px;
font-weight: 600;
}
.badge-search { background: #dbeafe; color: #1e40af; }
.badge-performance_max { background: #fef3c7; color: #92400e; }
.badge-shopping { background: #d1fae5; color: #065f46; }
.badge-display { background: #ede9fe; color: #5b21b6; }
.badge-demand_gen { background: #fce7f3; color: #9d174d; }
.summary-box {
background: var(--primary-light);
border-left: 4px solid var(--primary);
padding: 24px;
border-radius: 0 10px 10px 0;
font-size: 15px;
line-height: 1.8;
}
.two-col {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
margin-top: 24px;
}
.bar {
height: 8px;
background: var(--primary);
border-radius: 4px;
min-width: 4px;
}
.recommendations-list {
display: flex;
flex-direction: column;
gap: 16px;
}
.rec-item {
display: flex;
gap: 16px;
padding: 16px;
background: var(--light-gray);
border-radius: 8px;
border-left: 4px solid var(--primary);
}
.rec-icon {
font-size: 20px;
flex-shrink: 0;
margin-top: 2px;
}
.rec-item p {
margin-top: 4px;
color: var(--gray);
font-size: 14px;
}
.questions-box {
background: linear-gradient(135deg, #fff8e1 0%, #fff3cd 100%);
border-left: 4px solid #f59e0b;
border-radius: 10px;
padding: 24px 28px;
margin-top: 16px;
}
.questions-box h3 {
margin: 0 0 8px 0;
color: #92400e;
font-size: 18px;
}
.questions-box .intro {
color: #78350f;
font-size: 14px;
margin-bottom: 16px;
}
.questions-list {
display: flex;
flex-direction: column;
gap: 14px;
}
.q-item {
display: flex;
gap: 14px;
padding: 14px 16px;
background: rgba(255,255,255,0.7);
border-radius: 8px;
}
.q-num {
flex-shrink: 0;
width: 28px;
height: 28px;
border-radius: 50%;
background: #f59e0b;
color: white;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 14px;
}
.q-item strong { color: #92400e; display: block; margin-bottom: 4px; }
.q-item p { margin: 0; color: #57534e; font-size: 14px; line-height: 1.6; }
.footer {
text-align: center;
padding: 32px;
color: var(--gray);
font-size: 13px;
}
.footer a {
color: var(--primary);
text-decoration: none;
}
@media (max-width: 768px) {
.hero { padding: 40px 20px; }
.hero h1 { font-size: 28px; }
.kpi-grid { grid-template-columns: repeat(2, 1fr); }
.two-col { grid-template-columns: 1fr; }
.report-section { padding: 20px; margin: 12px; }
}
@media print {
body { background: white; }
.report-section { box-shadow: none; page-break-inside: avoid; }
.hero { padding: 30px; }
}
</style>
</head>
<body>
<!-- HERO / TITLE -->
<header class="hero">
<div class="hero-content">
<div class="logo">
<img src="https://www.project-pro.pl/upload/filemanager/Project-Design/logos/project-pro/logo-white.svg" alt="Project-Pro" style="height: 40px;">
</div>
<h1>Raport z działań marketingowych</h1>
<div class="meta">Aruba Rzeszow &mdash; Kwiecień 2026</div>
</div>
</header>
<!-- RECOMMENDATIONS -->
<section class="report-section" id="recommendations">
<h2 class="section-title">Wnioski i rekomendacje</h2>
<div class="recommendations-list">
<div class="rec-item"><span class="rec-icon">&#9888;</span><div><strong>Spadek konwersji do obserwacji</strong><p>Liczba konwersji spadla o 8.2% miesiac do miesiaca. Rekomendujemy sprawdzenie kampanii o najwiekszym spadku wolumenu.</p></div></div><div class="rec-item"><span class="rec-icon">&#128200;</span><div><strong>ROAS liczony z Google Ads</strong><p>ROAS z Google Ads wyniosl 8.47. Ten wskaznik liczymy z wartosci konwersji Google Ads, nie z przychodow sklepu.</p></div></div><div class="rec-item"><span class="rec-icon">&#128269;</span><div><strong>Kontrola wzrostu kosztu</strong><p>Koszt reklam wzrosl o 12.2% miesiac do miesiaca. Warto porownac wzrost kosztu ze wzrostem konwersji i wartosci konwersji.</p></div></div>
</div>
</section>
<!-- GA4 SECTION -->
<!-- E-COMMERCE -->
<!-- PRODUCT OPTIMIZATIONS -->
<!-- TOP ADS PRODUCTS -->
<!-- YEAR OVER YEAR -->
<!-- GOOGLE ADS KPIs -->
<section class="report-section" id="ads-kpi">
<h2 class="section-title">Google Ads &mdash; Podsumowanie</h2>
<div class="kpi-grid">
<div class="kpi-card">
<div class="kpi-label">Wyświetlenia</div>
<div class="kpi-value">172 277<span class="kpi-unit"></span></div>
<div class="kpi-change" style="color: #e74c3c">
&#9660; -0.6% vs Marzec
</div>
</div>
<div class="kpi-card">
<div class="kpi-label">Kliknięcia</div>
<div class="kpi-value">3 826<span class="kpi-unit"></span></div>
<div class="kpi-change" style="color: #27ae60">
&#9650; +2.5% vs Marzec
</div>
</div>
<div class="kpi-card">
<div class="kpi-label">CTR</div>
<div class="kpi-value">2.2<span class="kpi-unit">%</span></div>
<div class="kpi-change" style="color: #27ae60">
&#9650; +3.3% vs Marzec
</div>
</div>
<div class="kpi-card">
<div class="kpi-label">Konwersje</div>
<div class="kpi-value">199<span class="kpi-unit"></span></div>
<div class="kpi-change" style="color: #e74c3c">
&#9660; -8.2% vs Marzec
</div>
</div>
<div class="kpi-card">
<div class="kpi-label">Koszt</div>
<div class="kpi-value">4880.74<span class="kpi-unit"> PLN</span></div>
<div class="kpi-change" style="color: #e74c3c">
&#9650; +12.2% vs Marzec
</div>
</div>
<div class="kpi-card">
<div class="kpi-label">CPA</div>
<div class="kpi-value">24.46<span class="kpi-unit"> PLN</span></div>
<div class="kpi-change" style="color: #e74c3c">
&#9650; +22.2% vs Marzec
</div>
</div>
<div class="kpi-card">
<div class="kpi-label">ROAS</div>
<div class="kpi-value">8.47<span class="kpi-unit">x</span></div>
<div class="kpi-change" style="color: #e74c3c">
&#9660; -1.5% vs Marzec
</div>
</div></div>
</section>
<!-- DAILY CHART -->
<section class="report-section" id="ads-chart">
<h2 class="section-title">Google Ads &mdash; Aktywność dzienna</h2>
<div class="chart-container">
<canvas id="dailyClicksChart"></canvas>
</div>
</section>
<!-- CAMPAIGNS TABLE -->
<section class="report-section" id="campaigns">
<h2 class="section-title">Kampanie</h2>
<table class="data-table">
<thead>
<tr>
<th>Kampania</th>
<th>Typ</th>
<th>Wyświetlenia</th>
<th>Kliknięcia</th>
<th>CTR</th>
<th>Konwersje</th>
<th>Koszt</th>
<th>CPA</th>
</tr>
</thead>
<tbody>
<tr>
<td>[Search] brand</td>
<td><span class="badge badge-search">SEARCH</span></td>
<td class="num">1 614</td>
<td class="num">483</td>
<td class="num">29.9%</td>
<td class="num">27</td>
<td class="num">337.96 PLN</td>
<td class="num">12.52 PLN</td>
</tr>
<tr>
<td>[DSA] produkty</td>
<td><span class="badge badge-search">SEARCH</span></td>
<td class="num">9 984</td>
<td class="num">694</td>
<td class="num">7.0%</td>
<td class="num">23</td>
<td class="num">1098.15 PLN</td>
<td class="num">47.75 PLN</td>
</tr>
<tr>
<td>[PMax] products (catch-all)</td>
<td><span class="badge badge-performance_max">PERFORMANCE_MAX</span></td>
<td class="num">138 921</td>
<td class="num">2 164</td>
<td class="num">1.6%</td>
<td class="num">106</td>
<td class="num">2762.99 PLN</td>
<td class="num">25.94 PLN</td>
</tr>
<tr>
<td>[PLA] produkty (bestsellers)</td>
<td><span class="badge badge-shopping">SHOPPING</span></td>
<td class="num">21 758</td>
<td class="num">485</td>
<td class="num">2.2%</td>
<td class="num">43</td>
<td class="num">681.64 PLN</td>
<td class="num">15.85 PLN</td>
</tr></tbody>
</table>
</section>
<!-- SEARCH TERMS -->
<section class="report-section" id="search-terms">
<h2 class="section-title">Najpopularniejsze frazy wyszukiwania</h2>
<table class="data-table">
<thead>
<tr>
<th>#</th>
<th>Fraza</th>
<th>Wyświetlenia</th>
<th>Kliknięcia</th>
<th>CTR</th>
<th>Konwersje</th>
</tr>
</thead>
<tbody>
<tr>
<td class="num">1</td>
<td>aruba rzeszów</td>
<td class="num">836</td>
<td class="num">246</td>
<td class="num">29.4%</td>
<td class="num">16</td>
</tr>
<tr>
<td class="num">2</td>
<td>gen factor</td>
<td class="num">858</td>
<td class="num">59</td>
<td class="num">6.9%</td>
<td class="num">1</td>
</tr>
<tr>
<td class="num">3</td>
<td>aruba hurtownia</td>
<td class="num">122</td>
<td class="num">48</td>
<td class="num">39.3%</td>
<td class="num">4</td>
</tr>
<tr>
<td class="num">4</td>
<td>aruba rzeszow</td>
<td class="num">127</td>
<td class="num">39</td>
<td class="num">30.7%</td>
<td class="num">0</td>
</tr>
<tr>
<td class="num">5</td>
<td>gen factor green</td>
<td class="num">207</td>
<td class="num">21</td>
<td class="num">10.1%</td>
<td class="num">2</td>
</tr>
<tr>
<td class="num">6</td>
<td>gen factor</td>
<td class="num">604</td>
<td class="num">21</td>
<td class="num">3.5%</td>
<td class="num">1</td>
</tr>
<tr>
<td class="num">7</td>
<td>verru immuno</td>
<td class="num">495</td>
<td class="num">19</td>
<td class="num">3.8%</td>
<td class="num">2</td>
</tr>
<tr>
<td class="num">8</td>
<td>aruba sklep</td>
<td class="num">48</td>
<td class="num">17</td>
<td class="num">35.4%</td>
<td class="num">1</td>
</tr>
<tr>
<td class="num">9</td>
<td>aurumaris</td>
<td class="num">113</td>
<td class="num">13</td>
<td class="num">11.5%</td>
<td class="num">0</td>
</tr>
<tr>
<td class="num">10</td>
<td>aruba hurtownia kosmetyczna</td>
<td class="num">25</td>
<td class="num">12</td>
<td class="num">48.0%</td>
<td class="num">1</td>
</tr>
<tr>
<td class="num">11</td>
<td>aruba kosmetyki</td>
<td class="num">33</td>
<td class="num">12</td>
<td class="num">36.4%</td>
<td class="num">1</td>
</tr>
<tr>
<td class="num">12</td>
<td>gen factor 09</td>
<td class="num">47</td>
<td class="num">11</td>
<td class="num">23.4%</td>
<td class="num">0</td>
</tr>
<tr>
<td class="num">13</td>
<td>genfactor</td>
<td class="num">111</td>
<td class="num">11</td>
<td class="num">9.9%</td>
<td class="num">2</td>
</tr>
<tr>
<td class="num">14</td>
<td>podopharm verru immuno</td>
<td class="num">230</td>
<td class="num">11</td>
<td class="num">4.8%</td>
<td class="num">2</td>
</tr>
<tr>
<td class="num">15</td>
<td>hurtownia aruba</td>
<td class="num">32</td>
<td class="num">10</td>
<td class="num">31.2%</td>
<td class="num">0</td>
</tr></tbody>
</table>
</section>
<!-- NEGATIVE KEYWORDS ADDED -->
<!-- SEMSTORM SEO -->
<!-- SEO ACTIVITIES -->
<!-- SEO LINKS -->
<!-- SUMMARY -->
<section class="report-section" id="summary">
<h2 class="section-title">Podsumowanie miesiąca</h2>
<div class="summary-box">
Odnotowano 199 konwersji w tym miesiącu. Ruch z reklam wzrósł o 2.5% (3826 kliknięć).
</div>
</section>
<!-- RECOMMENDATIONS moved to top -->
<!-- FOOTER -->
<div class="footer">
Raport wygenerowany przez <a href="https://www.project-pro.pl">Project-Pro</a> &mdash; marketing w wersji PRO
</div>
<script>
// Daily clicks chart
var ctx1 = document.getElementById('dailyClicksChart').getContext('2d');
new Chart(ctx1, {
type: 'line',
data: {
labels: ["04-01", "04-02", "04-03", "04-04", "04-05", "04-06", "04-07", "04-08", "04-09", "04-10", "04-11", "04-12", "04-13", "04-14", "04-15", "04-16", "04-17", "04-18", "04-19", "04-20", "04-21", "04-22", "04-23", "04-24", "04-25", "04-26", "04-27", "04-28", "04-29", "04-30"],
datasets: [{
label: 'Kliknięcia',
data: [102, 108, 72, 54, 39, 96, 130, 166, 137, 112, 95, 114, 185, 176, 164, 149, 107, 101, 114, 196, 163, 210, 170, 116, 112, 131, 144, 132, 135, 96],
borderColor: '#0d8b8b',
backgroundColor: 'rgba(13,139,139,0.1)',
fill: true,
tension: 0.3,
pointRadius: 3,
pointBackgroundColor: '#0d8b8b',
}, {
label: 'Wyświetlenia',
data: [6909, 5632, 4210, 3045, 2088, 3976, 5853, 7519, 6605, 4340, 3177, 4104, 7332, 7941, 7296, 6191, 4557, 3621, 5409, 7762, 7615, 9246, 9234, 5931, 5078, 5786, 6014, 6078, 5629, 4099],
borderColor: '#95a5a6',
backgroundColor: 'transparent',
borderDash: [5, 5],
tension: 0.3,
pointRadius: 0,
yAxisID: 'y1',
}]
},
options: {
responsive: true,
interaction: { mode: 'index', intersect: false },
scales: {
y: { beginAtZero: true, position: 'left', grid: { color: '#f0f0f0' } },
y1: { beginAtZero: true, position: 'right', grid: { display: false } },
x: { grid: { display: false }, ticks: { maxTicksLimit: 10 } }
}
}
});
</script>
</body>
</html>

View File

@@ -0,0 +1,429 @@
{
"client": "aruba.rzeszow.pl",
"month": "2026-04",
"month_name": "Kwiecień",
"year": 2026,
"prev_month": "2026-03",
"prev_month_name": "Marzec",
"generated_at": "2026-05-14T23:23:53.496703",
"google_ads": {
"campaigns": [
{
"id": "19591441631",
"name": "[Search] brand",
"status": "ENABLED",
"type": "SEARCH",
"impressions": 1614,
"clicks": 483,
"cost": 337.96,
"conversions": 27.0,
"conversion_value": 7967.63,
"ctr": 29.93,
"cpc": 0.7,
"cpa": 12.52,
"roas": 23.58
},
{
"id": "20561423980",
"name": "[DSA] produkty",
"status": "ENABLED",
"type": "SEARCH",
"impressions": 9984,
"clicks": 694,
"cost": 1098.15,
"conversions": 23.0,
"conversion_value": 6600.7,
"ctr": 6.95,
"cpc": 1.58,
"cpa": 47.75,
"roas": 6.01
},
{
"id": "21260050298",
"name": "[PMax] products (catch-all)",
"status": "ENABLED",
"type": "PERFORMANCE_MAX",
"impressions": 138921,
"clicks": 2164,
"cost": 2762.99,
"conversions": 106.5,
"conversion_value": 19390.88,
"ctr": 1.56,
"cpc": 1.28,
"cpa": 25.94,
"roas": 7.02
},
{
"id": "22926581178",
"name": "[PLA] produkty (bestsellers)",
"status": "ENABLED",
"type": "SHOPPING",
"impressions": 21758,
"clicks": 485,
"cost": 681.64,
"conversions": 43.0,
"conversion_value": 7367.07,
"ctr": 2.23,
"cpc": 1.41,
"cpa": 15.85,
"roas": 10.81
}
],
"totals": {
"impressions": 172277,
"clicks": 3826,
"cost": 4880.74,
"conversions": 199.5,
"conversion_value": 41326.28,
"ctr": 2.22,
"cpc": 1.28,
"cpa": 24.46,
"roas": 8.47
},
"prev_totals": {
"impressions": 173273,
"clicks": 3733,
"cost": 4351.39,
"conversions": 217.4,
"conversion_value": 37429.84,
"ctr": 2.15,
"cpc": 1.17,
"cpa": 20.02,
"roas": 8.6
},
"mom_change": {
"impressions_pct": -0.6,
"clicks_pct": 2.5,
"cost_pct": 12.2,
"conversions_pct": -8.2,
"ctr_pct": 3.3,
"cpc_pct": 9.4,
"cpa_pct": 22.2
},
"daily": [
{
"date": "2026-04-01",
"impressions": 6909,
"clicks": 102,
"cost": 120.77
},
{
"date": "2026-04-02",
"impressions": 5632,
"clicks": 108,
"cost": 167.66
},
{
"date": "2026-04-03",
"impressions": 4210,
"clicks": 72,
"cost": 95.19
},
{
"date": "2026-04-04",
"impressions": 3045,
"clicks": 54,
"cost": 101.11
},
{
"date": "2026-04-05",
"impressions": 2088,
"clicks": 39,
"cost": 49.2
},
{
"date": "2026-04-06",
"impressions": 3976,
"clicks": 96,
"cost": 112.82
},
{
"date": "2026-04-07",
"impressions": 5853,
"clicks": 130,
"cost": 138.02
},
{
"date": "2026-04-08",
"impressions": 7519,
"clicks": 166,
"cost": 225.05
},
{
"date": "2026-04-09",
"impressions": 6605,
"clicks": 137,
"cost": 165.58
},
{
"date": "2026-04-10",
"impressions": 4340,
"clicks": 112,
"cost": 130.39
},
{
"date": "2026-04-11",
"impressions": 3177,
"clicks": 95,
"cost": 92.74
},
{
"date": "2026-04-12",
"impressions": 4104,
"clicks": 114,
"cost": 116.26
},
{
"date": "2026-04-13",
"impressions": 7332,
"clicks": 185,
"cost": 201.76
},
{
"date": "2026-04-14",
"impressions": 7941,
"clicks": 176,
"cost": 232.59
},
{
"date": "2026-04-15",
"impressions": 7296,
"clicks": 164,
"cost": 186.57
},
{
"date": "2026-04-16",
"impressions": 6191,
"clicks": 149,
"cost": 165.26
},
{
"date": "2026-04-17",
"impressions": 4557,
"clicks": 107,
"cost": 95.56
},
{
"date": "2026-04-18",
"impressions": 3621,
"clicks": 101,
"cost": 118.02
},
{
"date": "2026-04-19",
"impressions": 5409,
"clicks": 114,
"cost": 175.25
},
{
"date": "2026-04-20",
"impressions": 7762,
"clicks": 196,
"cost": 239.2
},
{
"date": "2026-04-21",
"impressions": 7615,
"clicks": 163,
"cost": 262.91
},
{
"date": "2026-04-22",
"impressions": 9246,
"clicks": 210,
"cost": 265.25
},
{
"date": "2026-04-23",
"impressions": 9234,
"clicks": 170,
"cost": 222.45
},
{
"date": "2026-04-24",
"impressions": 5931,
"clicks": 116,
"cost": 202.37
},
{
"date": "2026-04-25",
"impressions": 5078,
"clicks": 112,
"cost": 174.69
},
{
"date": "2026-04-26",
"impressions": 5786,
"clicks": 131,
"cost": 162.94
},
{
"date": "2026-04-27",
"impressions": 6014,
"clicks": 144,
"cost": 191.42
},
{
"date": "2026-04-28",
"impressions": 6078,
"clicks": 132,
"cost": 181.99
},
{
"date": "2026-04-29",
"impressions": 5629,
"clicks": 135,
"cost": 166.02
},
{
"date": "2026-04-30",
"impressions": 4099,
"clicks": 96,
"cost": 121.72
}
],
"search_terms": [
{
"term": "aruba rzeszów",
"impressions": 836,
"clicks": 246,
"cost": 131.67,
"conversions": 16.0,
"ctr": 29.43
},
{
"term": "gen factor",
"impressions": 858,
"clicks": 59,
"cost": 134.33,
"conversions": 1.0,
"ctr": 6.88
},
{
"term": "aruba hurtownia",
"impressions": 122,
"clicks": 48,
"cost": 26.45,
"conversions": 4.0,
"ctr": 39.34
},
{
"term": "aruba rzeszow",
"impressions": 127,
"clicks": 39,
"cost": 24.46,
"conversions": 0.0,
"ctr": 30.71
},
{
"term": "gen factor green",
"impressions": 207,
"clicks": 21,
"cost": 46.65,
"conversions": 2.0,
"ctr": 10.14
},
{
"term": "gen factor",
"impressions": 604,
"clicks": 21,
"cost": 25.05,
"conversions": 1.0,
"ctr": 3.48
},
{
"term": "verru immuno",
"impressions": 495,
"clicks": 19,
"cost": 27.24,
"conversions": 2.0,
"ctr": 3.84
},
{
"term": "aruba sklep",
"impressions": 48,
"clicks": 17,
"cost": 3.4,
"conversions": 1.0,
"ctr": 35.42
},
{
"term": "aurumaris",
"impressions": 113,
"clicks": 13,
"cost": 14.52,
"conversions": 0.0,
"ctr": 11.5
},
{
"term": "aruba hurtownia kosmetyczna",
"impressions": 25,
"clicks": 12,
"cost": 7.85,
"conversions": 1.0,
"ctr": 48.0
},
{
"term": "aruba kosmetyki",
"impressions": 33,
"clicks": 12,
"cost": 3.27,
"conversions": 1.0,
"ctr": 36.36
},
{
"term": "gen factor 09",
"impressions": 47,
"clicks": 11,
"cost": 15.43,
"conversions": 0.0,
"ctr": 23.4
},
{
"term": "genfactor",
"impressions": 111,
"clicks": 11,
"cost": 27.84,
"conversions": 2.0,
"ctr": 9.91
},
{
"term": "podopharm verru immuno",
"impressions": 230,
"clicks": 11,
"cost": 15.75,
"conversions": 2.0,
"ctr": 4.78
},
{
"term": "hurtownia aruba",
"impressions": 32,
"clicks": 10,
"cost": 7.31,
"conversions": 0.0,
"ctr": 31.25
}
]
},
"ga4": null,
"semstorm": null,
"sales_history": [],
"seo_links": [],
"recommendations": [
{
"icon": "&#9888;",
"title": "Spadek konwersji do obserwacji",
"text": "Liczba konwersji spadla o 8.2% miesiac do miesiaca. Rekomendujemy sprawdzenie kampanii o najwiekszym spadku wolumenu."
},
{
"icon": "&#128200;",
"title": "ROAS liczony z Google Ads",
"text": "ROAS z Google Ads wyniosl 8.47. Ten wskaznik liczymy z wartosci konwersji Google Ads, nie z przychodow sklepu."
},
{
"icon": "&#128269;",
"title": "Kontrola wzrostu kosztu",
"text": "Koszt reklam wzrosl o 12.2% miesiac do miesiaca. Warto porownac wzrost kosztu ze wzrostem konwersji i wartosci konwersji."
}
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,126 @@
from __future__ import annotations
import tomllib
from dataclasses import dataclass
from .config import ROOT
from .table import print_table
@dataclass(frozen=True)
class Task:
id: str
name: str
description: str
group_id: str
group_name: str
number: int
group_number: int
index_in_group: int
@property
def selection(self) -> str:
return f"{self.group_number}.{self.index_in_group}"
@dataclass(frozen=True)
class TaskGroup:
id: str
name: str
number: int
def load_task_config() -> dict:
path = ROOT / "config" / "tasks.toml"
return tomllib.loads(path.read_text(encoding="utf-8"))
def load_groups() -> list[TaskGroup]:
data = load_task_config()
groups = []
for index, group in enumerate(data.get("groups", []), 1):
groups.append(TaskGroup(id=group["id"], name=group["name"], number=index))
return groups
def load_tasks() -> list[Task]:
data = load_task_config()
tasks: list[Task] = []
number = 1
for group_number, group in enumerate(data.get("groups", []), 1):
for index_in_group, row in enumerate(group.get("tasks", []), 1):
tasks.append(
Task(
id=row["id"],
name=row["name"],
description=row.get("description", ""),
group_id=group["id"],
group_name=group["name"],
number=number,
group_number=group_number,
index_in_group=index_in_group,
)
)
number += 1
return tasks
def task_by_number(tasks: list[Task], number: int) -> Task | None:
for task in tasks:
if task.number == number:
return task
return None
def task_by_selection(tasks: list[Task], selection: str) -> Task | None:
normalized = selection.strip().lower()
for task in tasks:
if task.selection.lower() == normalized:
return task
return None
def tasks_by_selection_group(tasks: list[Task], groups: list[TaskGroup], selection: str) -> list[Task]:
normalized = selection.strip().lower()
if not normalized.endswith(".0"):
return []
try:
group_number = int(normalized.split(".", 1)[0])
except ValueError:
return []
return tasks_by_group_number(tasks, groups, group_number)
def tasks_by_group_number(tasks: list[Task], groups: list[TaskGroup], number: int) -> list[Task]:
group = next((item for item in groups if item.number == number), None)
if not group:
return []
return [task for task in tasks if task.group_id == group.id]
def print_task_list(tasks: list[Task]) -> None:
groups = load_groups()
for group in groups:
group_tasks = [task for task in tasks if task.group_id == group.id]
if not group_tasks:
continue
print()
print("=" * 72)
print(f"GRUPA {group.number}: {group.name.upper()}")
print("=" * 72)
print_table(
["Nr", "Zadanie", "Opis"],
[[item.selection, item.name, item.description] for item in group_tasks],
)
print()
print("Opcje zbiorcze")
group_rows = [
[f"{group.number}.0", f"Wszystkie zadania z grupy: {group.name}"]
for group in groups
if any(task.group_id == group.id for task in tasks)
]
print_table(
["Nr", "Zakres"],
group_rows + [["ALL", "Wszystkie zadania ze wszystkich grup"]],
)

View File

@@ -0,0 +1,268 @@
from __future__ import annotations
import json
from dataclasses import dataclass
from pathlib import Path
from ..config import ClientConfig, client_dir
from ..history import append_change_markdown, append_history, now_local
from ..knowledge.store import rules_for_task
from ..table import print_table
TASK_ID = "check_conversion_tracking"
TASK_NAME = "Sprawdzenie pomiaru konwersji"
DEFAULT_SCOPE = [
{
"area": "Konwersje Google Ads",
"check": "Sprawdz, czy glowne konwersje sa aktywne i oznaczone jako cele uzywane do optymalizacji.",
},
{
"area": "Duplikacja konwersji",
"check": "Sprawdz, czy konto nie liczy tych samych zdarzen jednoczesnie z Google Ads, GA4 i importow.",
},
{
"area": "E-commerce",
"check": "Sprawdz, czy konwersje zakupowe przekazuja wartosc i walute.",
},
{
"area": "Remarketing dynamiczny",
"check": "Sprawdz, czy tagowanie e-commerce przekazuje identyfikatory produktow.",
},
{
"area": "Enhanced Conversions",
"check": "Sprawdz, czy rozszerzone konwersje sa skonfigurowane tam, gdzie ma to sens.",
},
]
@dataclass
class ConversionTrackingPlan:
scope: list[dict]
knowledge_rules: list[dict]
warnings: list[str]
def to_dict(self) -> dict:
return {
"task": TASK_ID,
"task_name": TASK_NAME,
"scope": self.scope,
"knowledge_rules": self.knowledge_rules,
"warnings": self.warnings,
"changes": [],
}
@classmethod
def from_dict(cls, data: dict) -> "ConversionTrackingPlan":
return cls(
scope=data.get("scope", []),
knowledge_rules=data.get("knowledge_rules", []),
warnings=data.get("warnings", []),
)
def build_conversion_tracking_plan(client_config: ClientConfig) -> ConversionTrackingPlan:
rules = rules_for_task(TASK_ID)
knowledge_rules = [
{
"id": rule.id,
"topic": rule.topic,
"rule_type": rule.rule_type,
"condition": rule.condition,
"recommendation": rule.recommendation,
"risk": rule.risk,
"source": rule.source,
}
for rule in rules
]
warnings = []
if not knowledge_rules:
warnings.append(
"Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. "
"Uruchom `python gads.py wiedza przypisz --restart` i przypisz pasujace reguly do check_conversion_tracking."
)
if not client_config.google_ads_customer_id:
warnings.append("Klient nie ma google_ads_customer_id w config/clients.toml.")
return ConversionTrackingPlan(scope=DEFAULT_SCOPE, knowledge_rules=knowledge_rules, warnings=warnings)
def save_conversion_tracking_plan(domain: str, plan: ConversionTrackingPlan) -> tuple[Path, Path]:
ts = now_local()
base = client_dir(domain) / "plans"
base.mkdir(parents=True, exist_ok=True)
stem = f"{ts.strftime('%Y-%m-%d_%H-%M-%S')}_{TASK_ID}"
json_path = base / f"{stem}.json"
md_path = base / f"{stem}.md"
payload = {
"created_at": ts.isoformat(timespec="seconds"),
"client": domain,
**plan.to_dict(),
}
json_path.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
lines = [
"# Plan: Sprawdzenie pomiaru konwersji",
"",
f"Klient: {domain}",
f"Utworzono: {ts.isoformat(timespec='seconds')}",
"",
"## Podsumowanie",
"",
f"- Obszary audytu: {len(plan.scope)}",
f"- Reguly wiedzy przypisane do zadania: {len(plan.knowledge_rules)}",
"- Zmiany do wdrozenia: 0",
"",
]
if plan.warnings:
lines.extend(["## Uwagi", ""])
lines.extend(f"- {item}" for item in plan.warnings)
lines.append("")
lines.extend(["## Zakres audytu", "", "| Obszar | Co sprawdzic |", "| --- | --- |"])
for row in plan.scope:
lines.append(f"| {row.get('area', '')} | {row.get('check', '')} |")
lines.append("")
if plan.knowledge_rules:
lines.extend(
[
"## Reguly z bazy wiedzy",
"",
"| ID | Temat | Rekomendacja | Ryzyko |",
"| --- | --- | --- | --- |",
]
)
for rule in plan.knowledge_rules:
lines.append(
f"| {rule.get('id', '')} | {rule.get('topic', '')} | "
f"{rule.get('recommendation', '')} | {rule.get('risk', '')} |"
)
lines.append("")
md_path.write_text("\n".join(lines), encoding="utf-8")
return json_path, md_path
def print_conversion_tracking_plan(plan: ConversionTrackingPlan) -> None:
print("\nPlan sprawdzenia pomiaru konwersji")
print_table(
["Metryka", "Liczba"],
[
["Obszary audytu", str(len(plan.scope))],
["Reguly wiedzy", str(len(plan.knowledge_rules))],
["Zmiany do wdrozenia", "0"],
],
)
if plan.warnings:
print("\nUwagi")
print_table(["Nr", "Uwaga"], [[str(index), item] for index, item in enumerate(plan.warnings, 1)])
print("\nZakres audytu")
print_table(
["Nr", "Obszar", "Co sprawdzic"],
[[str(index), row["area"], row["check"]] for index, row in enumerate(plan.scope, 1)],
)
if plan.knowledge_rules:
print("\nReguly z bazy wiedzy")
print_table(
["Nr", "ID", "Temat", "Rekomendacja"],
[
[str(index), rule["id"], rule["topic"], rule["recommendation"]]
for index, rule in enumerate(plan.knowledge_rules[:10], 1)
],
)
if len(plan.knowledge_rules) > 10:
print(f"... oraz {len(plan.knowledge_rules) - 10} kolejnych regul")
def print_next_navigation(domain: str) -> None:
print("\nCo dalej:")
print(f"1. Lista zadan klienta {domain}")
print("2. Lista klientow")
print("3. Zakoncz")
print("\nKomendy:")
print(f"1 -> python gads.py analiza-klienta --client {domain}")
print("2 -> python gads.py analiza-klienta")
def apply_conversion_tracking_plan(
client_config: ClientConfig,
plan: ConversionTrackingPlan,
show_navigation: bool = True,
) -> None:
print("\nTo zadanie jest audytem i nie wdraza zmian na koncie Google Ads.")
changes_path = append_change_markdown(client_config.domain, TASK_NAME, [])
history_path = append_history(
client_config.domain,
{
"task": TASK_NAME,
"status": "audyt oznaczony jako wykonany",
"campaign": "",
"summary": {
"scope_items": len(plan.scope),
"knowledge_rules": len(plan.knowledge_rules),
"changes": 0,
},
},
)
print(f"Historia JSONL: {history_path}")
print(f"Historia Markdown: {changes_path}")
if show_navigation:
print_next_navigation(client_config.domain)
def run_check_conversion_tracking(
client_config: ClientConfig,
global_rules: dict,
plan_only: bool = False,
apply_plan_path: str | None = None,
confirm_apply: str | None = None,
show_navigation: bool = True,
) -> None:
_ = global_rules
if apply_plan_path:
if confirm_apply != "TAK":
print("Do oznaczenia audytu jako wykonanego wymagane jest --confirm-apply TAK.")
if show_navigation:
print_next_navigation(client_config.domain)
return
plan_data = json.loads(Path(apply_plan_path).read_text(encoding="utf-8"))
if plan_data.get("client") != client_config.domain:
print(f"Plan jest dla klienta {plan_data.get('client')}, a wybrano {client_config.domain}.")
if show_navigation:
print_next_navigation(client_config.domain)
return
plan = ConversionTrackingPlan.from_dict(plan_data)
print_conversion_tracking_plan(plan)
apply_conversion_tracking_plan(client_config, plan, show_navigation=show_navigation)
return
print(f"\nKlient: {client_config.domain}")
print("Przygotowuje plan sprawdzenia pomiaru konwersji...")
plan = build_conversion_tracking_plan(client_config)
print_conversion_tracking_plan(plan)
json_path, md_path = save_conversion_tracking_plan(client_config.domain, plan)
print(f"\nPlan JSON: {json_path}")
print(f"Plan Markdown: {md_path}")
append_history(
client_config.domain,
{
"task": TASK_NAME,
"status": "plan przygotowany",
"campaign": "",
"summary": {
"scope_items": len(plan.scope),
"knowledge_rules": len(plan.knowledge_rules),
"changes": 0,
},
},
)
if plan_only:
print("\nTryb plan-only: zmiany nie zostaly wdrozone.")
if show_navigation:
print_next_navigation(client_config.domain)
return
print("\nBrak zmian do wdrozenia. To zadanie tworzy plan audytu.")
if show_navigation:
print_next_navigation(client_config.domain)

View File

@@ -1,912 +0,0 @@
from __future__ import annotations
import csv
import json
import os
import re
from collections import defaultdict
from collections import Counter
from dataclasses import dataclass
from pathlib import Path
import requests
from google.protobuf import field_mask_pb2
from ..config import ClientConfig, client_dir
from ..google_ads import get_google_ads_client, run_query
from ..history import append_change_markdown, append_history, now_local
CSV_COLS = [
"id", "offer_id", "title", "availability", "channel", "content_language",
"target_country", "feed_label", "brand", "google_product_category",
"custom_label_0", "custom_label_1", "custom_label_2", "custom_label_3",
"custom_label_4", "link",
]
@dataclass
class SyncPlan:
campaigns: list[dict]
groups_total: int
groups_with_product_id: int
create_plan: list[dict]
enable_plan: list[dict]
pause_plan: list[dict]
rename_plan: list[dict]
warnings: list[str]
unmatched_groups: list[dict] | None = None
def to_dict(self) -> dict:
def serialize_rows(rows: list[dict]) -> list[dict]:
serialized = []
for item in rows:
row = {}
for key, value in item.items():
if isinstance(value, set):
row[key] = sorted(value)
else:
row[key] = value
serialized.append(row)
return serialized
return {
"task": "sync_pla_cl1",
"campaigns": serialize_rows(self.campaigns),
"groups_total": self.groups_total,
"groups_with_product_id": self.groups_with_product_id,
"create_plan": serialize_rows(self.create_plan),
"enable_plan": serialize_rows(self.enable_plan),
"pause_plan": serialize_rows(self.pause_plan),
"rename_plan": serialize_rows(self.rename_plan),
"warnings": self.warnings,
"unmatched_groups": serialize_rows(self.unmatched_groups or []),
}
@classmethod
def from_dict(cls, data: dict) -> "SyncPlan":
return cls(
campaigns=data.get("campaigns", []),
groups_total=int(data.get("groups_total", 0)),
groups_with_product_id=int(data.get("groups_with_product_id", 0)),
create_plan=data.get("create_plan", []),
enable_plan=data.get("enable_plan", []),
pause_plan=data.get("pause_plan", []),
rename_plan=data.get("rename_plan", []),
warnings=data.get("warnings", []),
unmatched_groups=data.get("unmatched_groups", []),
)
def campaign_action_summary(plan: SyncPlan) -> list[dict]:
campaign_names = set()
for action_name in ("create_plan", "enable_plan", "pause_plan", "rename_plan"):
for row in getattr(plan, action_name):
if row.get("campaign_name"):
campaign_names.add(row["campaign_name"])
create_counts = Counter(row["campaign_name"] for row in plan.create_plan)
enable_counts = Counter(row["campaign_name"] for row in plan.enable_plan)
pause_counts = Counter(row["campaign_name"] for row in plan.pause_plan)
rename_counts = Counter(row["campaign_name"] for row in plan.rename_plan)
return [
{
"campaign_name": name,
"create": create_counts.get(name, 0),
"enable": enable_counts.get(name, 0),
"pause": pause_counts.get(name, 0),
"rename": rename_counts.get(name, 0),
}
for name in sorted(campaign_names)
]
def normalize_text(value: str) -> str:
return " ".join(
(value or "")
.lower()
.replace("", "-")
.replace("", "-")
.replace("|", "-")
.replace("", "")
.replace("", "")
.replace('"', "")
.split()
)
def parse_allowed_labels(campaign_name: str) -> set[str]:
match = re.search(r"\]\s*(.+)$", campaign_name)
raw = match.group(1).strip() if match else campaign_name
if "|" in raw:
raw = raw.split("|", 1)[0].strip()
return {part.strip() for part in raw.split(",") if part.strip()}
def fetch_adspro_products(client: ClientConfig, segments: list[str]) -> list[dict]:
api_url = os.environ.get("ADSPRO_API_URL")
api_key = os.environ.get("ADSPRO_API_KEY")
if not api_url or not api_key:
raise RuntimeError("Brak ADSPRO_API_URL lub ADSPRO_API_KEY w .env.")
if not client.adspro_client_id:
raise RuntimeError(f"Brak adspro_client_id dla {client.domain} w config/clients.toml.")
by_offer_id = {}
for segment in segments:
response = requests.post(
api_url,
data={
"action": "products_get_by_cl1",
"api_key": api_key,
"client_id": client.adspro_client_id,
"custom_label_1": segment,
},
timeout=60,
)
data = response.json()
if data.get("result") == "error":
raise RuntimeError(f"adsPRO zwrocil blad dla CL1={segment}: {data.get('message')}")
for product in data.get("products", []):
offer_id = product.get("offer_id") or ""
if offer_id:
by_offer_id[offer_id] = {
"id": "",
"offer_id": offer_id,
"title": product.get("title", "") or "",
"availability": "",
"channel": "",
"content_language": "",
"target_country": "",
"feed_label": "",
"brand": "",
"google_product_category": product.get("google_product_category", "") or "",
"custom_label_0": "",
"custom_label_1": product.get("custom_label_1", "") or "",
"custom_label_2": "",
"custom_label_3": product.get("custom_label_3", "") or "",
"custom_label_4": product.get("custom_label_4", "") or "",
"link": "",
}
return list(by_offer_id.values())
def save_products_csv(domain: str, products: list[dict]) -> Path:
out = client_dir(domain) / "data"
out.mkdir(parents=True, exist_ok=True)
path = out / "merchant_produkty_adspro.csv"
with path.open("w", newline="", encoding="utf-8-sig") as f:
writer = csv.DictWriter(f, fieldnames=CSV_COLS)
writer.writeheader()
writer.writerows(products)
return path
def save_plan_files(domain: str, plan: SyncPlan, products_count: int) -> tuple[Path, Path]:
ts = now_local()
base = client_dir(domain) / "plans"
base.mkdir(parents=True, exist_ok=True)
stem = f"{ts.strftime('%Y-%m-%d_%H-%M-%S')}_sync_pla_cl1"
json_path = base / f"{stem}.json"
md_path = base / f"{stem}.md"
payload = {
"created_at": ts.isoformat(timespec="seconds"),
"client": domain,
"products_count": products_count,
**plan.to_dict(),
}
json_path.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
lines = [
"# Plan: Synchronizacja kampanii PLA_CL1",
"",
f"Klient: {domain}",
f"Utworzono: {ts.isoformat(timespec='seconds')}",
"",
"## Podsumowanie",
"",
f"- Kampanie PLA_CL1: {len(plan.campaigns)}",
f"- Produkty z adsPRO: {products_count}",
f"- Grupy reklam obecnie: {plan.groups_total}",
f"- Grupy reklam z identyfikatorem produktu: {plan.groups_with_product_id}",
f"- Do utworzenia: {len(plan.create_plan)}",
f"- Do włączenia: {len(plan.enable_plan)}",
f"- Do wstrzymania: {len(plan.pause_plan)}",
f"- Do zmiany nazwy: {len(plan.rename_plan)}",
"",
]
if plan.warnings:
lines.extend(["## Uwagi", ""])
lines.extend(f"- {warning}" for warning in plan.warnings)
lines.append("")
summary = campaign_action_summary(plan)
if summary:
lines.extend(["## Podsumowanie po kampaniach", "", "| Kampania | Utworz | Wlacz | Wstrzymaj | Zmien nazwe |", "| --- | ---: | ---: | ---: | ---: |"])
for row in summary:
lines.append(
f"| {row['campaign_name']} | {row['create']} | {row['enable']} | {row['pause']} | {row['rename']} |"
)
lines.append("")
if plan.unmatched_groups:
lines.extend(["## Grupy reklam bez dopasowania w adsPRO", "", "| Kampania | Grupa reklam | Status | Identyfikator produktu |", "| --- | --- | --- | --- |"])
for row in plan.unmatched_groups:
lines.append(
f"| {row['campaign_name']} | {row['ad_group_name']} | {row['ad_group_status']} | {row.get('offer_id', '')} |"
)
lines.append("")
if plan.create_plan:
lines.extend(["## Grupy reklam do utworzenia", "", "| Kampania | Grupa reklam | Produkt | Powod |", "| --- | --- | --- | --- |"])
for row in plan.create_plan:
lines.append(
f"| {row['campaign_name']} | {row['ad_group_name']} | {row['product_id']} | {row['reason']} |"
)
lines.append("")
if plan.enable_plan:
lines.extend(["## Grupy reklam do wlaczenia", "", "| Kampania | Grupa reklam | Produkt | Powod |", "| --- | --- | --- | --- |"])
for row in plan.enable_plan:
lines.append(
f"| {row['campaign_name']} | {row['ad_group_name']} | {row['product_id']} | {row['reason']} |"
)
lines.append("")
if plan.pause_plan:
lines.extend(["## Grupy reklam do wstrzymania", "", "| Kampania | Grupa reklam | Powod |", "| --- | --- | --- |"])
for row in plan.pause_plan:
lines.append(f"| {row['campaign_name']} | {row['ad_group_name']} | {row['reason']} |")
lines.append("")
if plan.rename_plan:
lines.extend(["## Nazwy grup reklam do zmiany", "", "| Kampania | Obecna nazwa | Nowa nazwa |", "| --- | --- | --- |"])
for row in plan.rename_plan:
lines.append(f"| {row['campaign_name']} | {row['old_name']} | {row['new_name']} |")
lines.append("")
md_path.write_text("\n".join(lines), encoding="utf-8")
return json_path, md_path
def build_plan(client, customer_id: str, products: list[dict]) -> SyncPlan:
campaign_rows = run_query(
client,
customer_id,
"""
SELECT campaign.id, campaign.name, campaign.status
FROM campaign
WHERE campaign.name LIKE '%PLA_CL1%'
AND campaign.status = 'ENABLED'
""",
)
campaigns = [
{
"id": str(row.campaign.id),
"name": row.campaign.name,
"status": row.campaign.status.name,
"allowed": parse_allowed_labels(row.campaign.name),
}
for row in campaign_rows
]
if not campaigns:
return SyncPlan([], 0, 0, [], [], [], [], ["Nie znaleziono kampanii [PLA_CL1]."], [])
label_to_campaign = {}
for campaign in campaigns:
for label in campaign["allowed"]:
label_to_campaign[label] = campaign
by_offer_id = {}
by_title_norm = defaultdict(list)
by_label = defaultdict(list)
for product in products:
offer_id = (product.get("offer_id") or "").strip()
title = (product.get("title") or "").strip()
label = (product.get("custom_label_1") or "").strip()
if offer_id:
by_offer_id[offer_id] = product
if title:
by_title_norm[normalize_text(title)].append(product)
if label and title:
by_label[label].append(product)
campaign_ids = ", ".join(c["id"] for c in campaigns)
group_rows = run_query(
client,
customer_id,
f"""
SELECT ad_group.id, ad_group.name, ad_group.status, campaign.id, campaign.name
FROM ad_group
WHERE campaign.id IN ({campaign_ids})
AND ad_group.status != 'REMOVED'
""",
)
criterion_rows = run_query(
client,
customer_id,
f"""
SELECT ad_group.id,
ad_group_criterion.listing_group.case_value.product_item_id.value,
ad_group_criterion.listing_group.type,
ad_group_criterion.negative
FROM ad_group_criterion
WHERE campaign.id IN ({campaign_ids})
AND ad_group_criterion.type = 'LISTING_GROUP'
AND ad_group_criterion.status != 'REMOVED'
""",
)
group_to_offer = {}
for row in criterion_rows:
if row.ad_group_criterion.negative:
continue
if row.ad_group_criterion.listing_group.type.name != "UNIT":
continue
offer_id = row.ad_group_criterion.listing_group.case_value.product_item_id.value
if offer_id:
group_to_offer.setdefault(str(row.ad_group.id), offer_id)
enabled_offers_by_campaign = defaultdict(set)
existing_groups_by_campaign_offer = defaultdict(list)
existing_groups_by_campaign_name = defaultdict(list)
all_groups = []
for row in group_rows:
group_id = str(row.ad_group.id)
record = {
"ad_group_id": group_id,
"ad_group_name": row.ad_group.name,
"ad_group_status": row.ad_group.status.name,
"campaign_id": str(row.campaign.id),
"campaign_name": row.campaign.name,
"allowed": parse_allowed_labels(row.campaign.name),
"offer_id": group_to_offer.get(group_id, ""),
}
all_groups.append(record)
existing_groups_by_campaign_name[(record["campaign_id"], normalize_text(record["ad_group_name"]))].append(record)
if record["offer_id"]:
existing_groups_by_campaign_offer[(record["campaign_id"], record["offer_id"])].append(record)
if record["ad_group_status"] == "ENABLED":
enabled_offers_by_campaign[record["campaign_id"]].add(record["offer_id"])
wrong_groups = []
groups_without_match = []
active_groups_without_match = []
rename_plan = []
for group in all_groups:
product = by_offer_id.get(group["offer_id"]) if group["offer_id"] else None
match_via = "offer_id" if product else None
if not product:
candidates = by_title_norm.get(normalize_text(group["ad_group_name"])) or []
if candidates:
product = candidates[0]
match_via = "title"
if not product:
groups_without_match.append(group)
if group["ad_group_status"] == "ENABLED":
active_groups_without_match.append(group)
continue
label = (product.get("custom_label_1") or "").strip()
if not label:
if group["ad_group_status"] == "ENABLED":
active_groups_without_match.append(group)
continue
if label not in group["allowed"]:
wrong_groups.append((group, product))
continue
adspro_title = (product.get("title") or "").strip()
if (
group["ad_group_status"] == "ENABLED"
and match_via == "offer_id"
and adspro_title
and group["ad_group_name"] != adspro_title
):
rename_plan.append(
{
"ad_group_id": group["ad_group_id"],
"campaign_id": group["campaign_id"],
"campaign_name": group["campaign_name"],
"old_name": group["ad_group_name"],
"new_name": adspro_title,
}
)
create_plan = []
enable_by_id = {}
pause_by_id = {}
def plan_enable_or_create(campaign: dict, product: dict, fallback_name: str, reason: str) -> None:
offer_id = (product.get("offer_id") or "").strip()
title = (product.get("title") or "").strip() or fallback_name
if not offer_id or not title:
return
if offer_id in enabled_offers_by_campaign[campaign["id"]]:
return
existing_candidates = existing_groups_by_campaign_offer.get((campaign["id"], offer_id), [])
if not existing_candidates:
existing_candidates = existing_groups_by_campaign_name.get((campaign["id"], normalize_text(title)), [])
paused_candidate = next((group for group in existing_candidates if group["ad_group_status"] == "PAUSED"), None)
if paused_candidate:
enable_by_id[paused_candidate["ad_group_id"]] = {
"ad_group_id": paused_candidate["ad_group_id"],
"ad_group_name": paused_candidate["ad_group_name"],
"campaign_id": paused_candidate["campaign_id"],
"campaign_name": paused_candidate["campaign_name"],
"product_id": offer_id,
"reason": reason,
}
enabled_offers_by_campaign[campaign["id"]].add(offer_id)
return
existing_active = next(
(group for group in existing_candidates if group["ad_group_status"] == "ENABLED"),
None,
)
if existing_active:
enabled_offers_by_campaign[campaign["id"]].add(offer_id)
return
create_plan.append(
{
"campaign_id": campaign["id"],
"campaign_name": campaign["name"],
"ad_group_name": title,
"product_id": offer_id,
"reason": reason,
}
)
enabled_offers_by_campaign[campaign["id"]].add(offer_id)
for group, product in wrong_groups:
offer_id = (product.get("offer_id") or "").strip()
label = (product.get("custom_label_1") or "").strip()
target = label_to_campaign.get(label)
if target and offer_id:
plan_enable_or_create(target, product, group["ad_group_name"], "produkt jest w zlej kampanii")
if group["ad_group_status"] == "ENABLED":
pause_by_id[group["ad_group_id"]] = {
"ad_group_id": group["ad_group_id"],
"ad_group_name": group["ad_group_name"],
"campaign_id": group["campaign_id"],
"campaign_name": group["campaign_name"],
"reason": "produkt jest w zlej kampanii",
}
for campaign in campaigns:
for label in campaign["allowed"]:
for product in by_label.get(label, []):
offer_id = (product.get("offer_id") or "").strip()
title = (product.get("title") or "").strip()
if not offer_id or not title:
continue
if offer_id in enabled_offers_by_campaign[campaign["id"]]:
continue
plan_enable_or_create(campaign, product, title, "brakuje aktywnej grupy reklam")
for group in active_groups_without_match:
pause_by_id[group["ad_group_id"]] = {
"ad_group_id": group["ad_group_id"],
"ad_group_name": group["ad_group_name"],
"campaign_id": group["campaign_id"],
"campaign_name": group["campaign_name"],
"reason": "brak dopasowania w adsPRO",
}
grouped = defaultdict(list)
for group in all_groups:
if group["ad_group_status"] != "ENABLED" or group["ad_group_id"] in pause_by_id or not group["offer_id"]:
continue
grouped[(group["campaign_id"], group["offer_id"])].append(group)
for group_list in grouped.values():
if len(group_list) <= 1:
continue
for group in sorted(group_list, key=lambda item: int(item["ad_group_id"]))[:-1]:
pause_by_id[group["ad_group_id"]] = {
"ad_group_id": group["ad_group_id"],
"ad_group_name": group["ad_group_name"],
"campaign_id": group["campaign_id"],
"campaign_name": group["campaign_name"],
"reason": "duplikat produktu w kampanii",
}
pause_plan = [pause_by_id[key] for key in sorted(pause_by_id, key=int)]
enable_plan = [enable_by_id[key] for key in sorted(enable_by_id, key=int)]
pause_ids = set(pause_by_id)
rename_plan = [row for row in rename_plan if row["ad_group_id"] not in pause_ids]
warnings = []
if groups_without_match:
warnings.append(f"Grupy reklam bez dopasowania w adsPRO: {len(groups_without_match)}.")
return SyncPlan(
campaigns=campaigns,
groups_total=len(all_groups),
groups_with_product_id=sum(1 for g in all_groups if g["offer_id"]),
create_plan=create_plan,
enable_plan=enable_plan,
pause_plan=pause_plan,
rename_plan=rename_plan,
warnings=warnings,
unmatched_groups=groups_without_match,
)
def create_ad_group_with_listing(client, customer_id: str, campaign_id: str, product_id: str, ad_group_name: str):
service = client.get_service("GoogleAdsService")
ad_group_service = client.get_service("AdGroupService")
campaign_resource = ad_group_service.campaign_path(customer_id, campaign_id)
ad_group_temp = f"customers/{customer_id}/adGroups/-1"
root_temp = f"customers/{customer_id}/adGroupCriteria/-1~-2"
operations = []
group_op = client.get_type("MutateOperation")
group = group_op.ad_group_operation.create
group.resource_name = ad_group_temp
group.name = ad_group_name
group.campaign = campaign_resource
group.status = client.enums.AdGroupStatusEnum.ENABLED
group.type_ = client.enums.AdGroupTypeEnum.SHOPPING_PRODUCT_ADS
operations.append(group_op)
root_op = client.get_type("MutateOperation")
root = root_op.ad_group_criterion_operation.create
root.resource_name = root_temp
root.ad_group = ad_group_temp
root.status = client.enums.AdGroupCriterionStatusEnum.ENABLED
root.listing_group.type_ = client.enums.ListingGroupTypeEnum.SUBDIVISION
operations.append(root_op)
product_op = client.get_type("MutateOperation")
product = product_op.ad_group_criterion_operation.create
product.ad_group = ad_group_temp
product.status = client.enums.AdGroupCriterionStatusEnum.ENABLED
product.listing_group.type_ = client.enums.ListingGroupTypeEnum.UNIT
product.listing_group.parent_ad_group_criterion = root_temp
product.listing_group.case_value.product_item_id.value = product_id
product.cpc_bid_micros = 1_000_000
operations.append(product_op)
other_op = client.get_type("MutateOperation")
other = other_op.ad_group_criterion_operation.create
other.ad_group = ad_group_temp
other.negative = True
other.status = client.enums.AdGroupCriterionStatusEnum.ENABLED
other.listing_group.type_ = client.enums.ListingGroupTypeEnum.UNIT
other.listing_group.parent_ad_group_criterion = root_temp
client.copy_from(other.listing_group.case_value.product_item_id, client.get_type("ProductItemIdInfo"))
operations.append(other_op)
ad_op = client.get_type("MutateOperation")
ad = ad_op.ad_group_ad_operation.create
ad.ad_group = ad_group_temp
ad.status = client.enums.AdGroupAdStatusEnum.ENABLED
ad.ad.shopping_product_ad._pb.SetInParent()
operations.append(ad_op)
service.mutate(customer_id=customer_id, mutate_operations=operations)
def pause_ad_groups(client, customer_id: str, ad_group_ids: list[str]) -> int:
service = client.get_service("AdGroupService")
changed = 0
for index in range(0, len(ad_group_ids), 500):
operations = []
for ad_group_id in ad_group_ids[index:index + 500]:
op = client.get_type("AdGroupOperation")
group = op.update
group.resource_name = service.ad_group_path(customer_id, ad_group_id)
group.status = client.enums.AdGroupStatusEnum.PAUSED
op.update_mask = field_mask_pb2.FieldMask(paths=["status"])
operations.append(op)
if operations:
response = service.mutate_ad_groups(customer_id=customer_id, operations=operations)
changed += len(response.results)
return changed
def enable_ad_groups(client, customer_id: str, ad_group_ids: list[str]) -> int:
if not ad_group_ids:
return 0
service = client.get_service("AdGroupService")
changed = 0
for index in range(0, len(ad_group_ids), 500):
operations = []
for ad_group_id in ad_group_ids[index:index + 500]:
op = client.get_type("AdGroupOperation")
group = op.update
group.resource_name = service.ad_group_path(customer_id, ad_group_id)
group.status = client.enums.AdGroupStatusEnum.ENABLED
op.update_mask = field_mask_pb2.FieldMask(paths=["status"])
operations.append(op)
if operations:
response = service.mutate_ad_groups(customer_id=customer_id, operations=operations)
changed += len(response.results)
return changed
def rename_ad_groups(client, customer_id: str, renames: list[dict]) -> int:
service = client.get_service("AdGroupService")
changed = 0
for index in range(0, len(renames), 500):
operations = []
for row in renames[index:index + 500]:
op = client.get_type("AdGroupOperation")
group = op.update
group.resource_name = service.ad_group_path(customer_id, row["ad_group_id"])
group.name = row["new_name"]
op.update_mask = field_mask_pb2.FieldMask(paths=["name"])
operations.append(op)
if operations:
response = service.mutate_ad_groups(customer_id=customer_id, operations=operations)
changed += len(response.results)
return changed
def print_plan(plan: SyncPlan) -> None:
print("\nPlan synchronizacji PLA_CL1")
print(f"Kampanie PLA_CL1: {len(plan.campaigns)}")
print(f"Grupy reklam obecnie: {plan.groups_total}")
print(f"Grupy reklam z identyfikatorem produktu: {plan.groups_with_product_id}")
print(f"Do utworzenia: {len(plan.create_plan)}")
print(f"Do włączenia: {len(plan.enable_plan)}")
print(f"Do wstrzymania: {len(plan.pause_plan)}")
print(f"Do zmiany nazwy: {len(plan.rename_plan)}")
for warning in plan.warnings:
print(f"Uwaga: {warning}")
summary = campaign_action_summary(plan)
if summary:
print("\nPodsumowanie po kampaniach:")
for row in summary:
print(
f" {row['campaign_name']} | "
f"utwórz={row['create']} | włącz={row['enable']} | "
f"wstrzymaj={row['pause']} | zmień nazwę={row['rename']}"
)
for row in plan.create_plan[:20]:
print(f" Utworz: {row['campaign_name']} | {row['ad_group_name']} | {row['product_id']}")
if len(plan.create_plan) > 20:
print(f" ... oraz {len(plan.create_plan) - 20} kolejnych grup reklam do utworzenia")
for row in plan.enable_plan[:20]:
print(f" Włącz: {row['campaign_name']} | {row['ad_group_name']} | {row['product_id']}")
if len(plan.enable_plan) > 20:
print(f" ... oraz {len(plan.enable_plan) - 20} kolejnych grup reklam do włączenia")
for row in plan.pause_plan[:20]:
print(f" Wstrzymaj: {row['campaign_name']} | {row['ad_group_name']} | {row['reason']}")
if len(plan.pause_plan) > 20:
print(f" ... oraz {len(plan.pause_plan) - 20} kolejnych grup reklam do wstrzymania")
for row in plan.rename_plan[:20]:
print(f" Zmien nazwe: {row['ad_group_id']} | {row['old_name'][:50]} -> {row['new_name'][:50]}")
if len(plan.rename_plan) > 20:
print(f" ... oraz {len(plan.rename_plan) - 20} kolejnych nazw do zmiany")
def print_next_navigation(domain: str) -> None:
print("\nCo dalej:")
print(f"1. Lista zadan klienta {domain}")
print("2. Lista klientow")
print("3. Zakoncz")
print("\nKomendy:")
print(f"1 -> python gads.py analiza-klienta --client {domain}")
print("2 -> python gads.py analiza-klienta")
def apply_sync_plan(client_config: ClientConfig, plan: SyncPlan, show_navigation: bool = True) -> None:
google_client = get_google_ads_client(use_proto_plus=True)
customer_id = client_config.safe_customer_id
created = 0
create_errors = 0
for row in plan.create_plan:
try:
create_ad_group_with_listing(
google_client,
customer_id,
row["campaign_id"],
row["product_id"],
row["ad_group_name"],
)
created += 1
except Exception as exc:
create_errors += 1
print(f"Blad tworzenia grupy reklam {row['ad_group_name']}: {exc}")
pause_ids = [row["ad_group_id"] for row in plan.pause_plan]
enable_ids = [row["ad_group_id"] for row in plan.enable_plan]
enabled = enable_ad_groups(google_client, customer_id, enable_ids) if enable_ids else 0
paused = pause_ad_groups(google_client, customer_id, pause_ids) if pause_ids else 0
renamed = rename_ad_groups(google_client, customer_id, plan.rename_plan) if plan.rename_plan else 0
print("\nWynik wdrozenia zmian")
print(f"Utworzono grup reklam: {created}")
print(f"Włączono grup reklam: {enabled}")
print(f"Bledy tworzenia: {create_errors}")
print(f"Wstrzymano grup reklam: {paused}")
print(f"Zmieniono nazwy grup reklam: {renamed}")
rows = []
rows.extend(
{
"klient": client_config.domain,
"kampania": row["campaign_name"],
"czynnosc": "włączono grupę reklam",
"grupa reklam": row["ad_group_name"],
"produkt": row["product_id"],
}
for row in plan.enable_plan
)
rows.extend(
{
"klient": client_config.domain,
"kampania": row["campaign_name"],
"czynnosc": "utworzono grupe reklam",
"grupa reklam": row["ad_group_name"],
"produkt": row["product_id"],
}
for row in plan.create_plan
)
rows.extend(
{
"klient": client_config.domain,
"kampania": row["campaign_name"],
"czynnosc": "wstrzymano grupe reklam",
"grupa reklam": row["ad_group_name"],
"produkt": row["reason"],
}
for row in plan.pause_plan
)
rows.extend(
{
"klient": client_config.domain,
"kampania": row["campaign_name"],
"czynnosc": "zmieniono nazwe grupy reklam",
"grupa reklam": row["old_name"],
"produkt": row["new_name"],
}
for row in plan.rename_plan
)
changes_path = append_change_markdown(client_config.domain, "Synchronizacja kampanii PLA_CL1", rows)
history_path = append_history(
client_config.domain,
{
"task": "Synchronizacja kampanii PLA_CL1",
"status": "wdrozono zmiany",
"campaign": ", ".join(c["name"] for c in plan.campaigns[:10]),
"summary": {
"created": created,
"enabled": enabled,
"create_errors": create_errors,
"paused": paused,
"renamed": renamed,
},
},
)
print(f"Historia JSONL: {history_path}")
print(f"Historia Markdown: {changes_path}")
if show_navigation:
print_next_navigation(client_config.domain)
def run_sync_pla_cl1(
client_config: ClientConfig,
global_rules: dict,
plan_only: bool = False,
apply_plan_path: str | None = None,
confirm_apply: str | None = None,
show_navigation: bool = True,
) -> None:
if apply_plan_path:
if confirm_apply != "TAK":
print("Do wdrozenia planu wymagane jest --confirm-apply TAK.")
if show_navigation:
print_next_navigation(client_config.domain)
return
plan_data = json.loads(Path(apply_plan_path).read_text(encoding="utf-8"))
if plan_data.get("client") != client_config.domain:
print(
f"Plan jest dla klienta {plan_data.get('client')}, "
f"a wybrano {client_config.domain}."
)
if show_navigation:
print_next_navigation(client_config.domain)
return
plan = SyncPlan.from_dict(plan_data)
print_plan(plan)
apply_sync_plan(client_config, plan, show_navigation=show_navigation)
return
started = now_local()
print(f"\nKlient: {client_config.domain}")
print("Pobieram kampanie PLA_CL1 i produkty z adsPRO...")
google_client = get_google_ads_client(use_proto_plus=True)
customer_id = client_config.safe_customer_id
campaign_rows = run_query(
google_client,
customer_id,
"""
SELECT campaign.id, campaign.name, campaign.status
FROM campaign
WHERE campaign.name LIKE '%PLA_CL1%'
AND campaign.status = 'ENABLED'
""",
)
segments = sorted(
{
label
for row in campaign_rows
for label in parse_allowed_labels(row.campaign.name)
}
)
if not segments:
print("Nie znaleziono segmentow CL1 w kampaniach [PLA_CL1].")
append_history(
client_config.domain,
{
"task": "Synchronizacja kampanii PLA_CL1",
"status": "brak kampanii",
"campaign": "",
},
)
if show_navigation:
print_next_navigation(client_config.domain)
return
print("Segmenty CL1: " + ", ".join(segments))
products = fetch_adspro_products(client_config, segments)
products_path = save_products_csv(client_config.domain, products)
print(f"Pobrano produkty z adsPRO: {len(products)}")
print(f"Zapisano dane: {products_path}")
plan = build_plan(google_client, customer_id, products)
print_plan(plan)
json_path, md_path = save_plan_files(client_config.domain, plan, len(products))
print(f"\nPlan JSON: {json_path}")
print(f"Plan Markdown: {md_path}")
append_history(
client_config.domain,
{
"task": "Synchronizacja kampanii PLA_CL1",
"status": "plan przygotowany",
"campaign": ", ".join(c["name"] for c in plan.campaigns[:10]),
"created_at": started.isoformat(timespec="seconds"),
"summary": {
"campaigns": len(plan.campaigns),
"products": len(products),
"create": len(plan.create_plan),
"enable": len(plan.enable_plan),
"pause": len(plan.pause_plan),
"rename": len(plan.rename_plan),
},
},
)
if plan_only:
print("\nTryb plan-only: zmiany nie zostaly wdrozone.")
if show_navigation:
print_next_navigation(client_config.domain)
return
if not plan.create_plan and not plan.enable_plan and not plan.pause_plan and not plan.rename_plan:
print("\nBrak zmian do wdrozenia.")
append_change_markdown(client_config.domain, "Synchronizacja kampanii PLA_CL1", [])
if show_navigation:
print_next_navigation(client_config.domain)
return
answer = input("\nWpisz TAK, aby wdrozyc powyzsze zmiany: ").strip()
if answer != "TAK":
print("Przerwano. Zmiany nie zostaly wdrozone.")
append_history(
client_config.domain,
{
"task": "Synchronizacja kampanii PLA_CL1",
"status": "odrzucono wdrozenie",
"campaign": ", ".join(c["name"] for c in plan.campaigns[:10]),
},
)
if show_navigation:
print_next_navigation(client_config.domain)
return
apply_sync_plan(client_config, plan, show_navigation=show_navigation)

View File

@@ -0,0 +1,394 @@
from __future__ import annotations
import json
from dataclasses import dataclass
from pathlib import Path
from ..config import ClientConfig, client_dir
from ..google_ads import get_google_ads_client, run_query
from ..history import append_change_markdown, append_history, now_local
from ..knowledge.store import rules_for_task
from ..table import print_table
TASK_ID = "check_search_basic_settings"
TASK_NAME = "Sprawdzenie podstawowych ustawien Search"
SCOPE = [
{
"area": "Lokalizacje",
"check": "Sprawdz typ kierowania lokalizacji, zwlaszcza Obecnosc vs Obecnosc lub zainteresowanie.",
},
{
"area": "Sieci",
"check": "Sprawdz, czy kampanie Search nie maja niechcaco wlaczonej sieci reklamowej albo partnerow wyszukiwania.",
},
{
"area": "Jezyki",
"check": "Sprawdz, czy ustawienia jezykowe sa zgodne z rynkiem klienta.",
},
{
"area": "Harmonogram reklam",
"check": "Sprawdz, czy harmonogram jest swiadomie ustawiony albo czy kampania dziala caly czas.",
},
]
OUT_OF_SCOPE = [
"budzety i wykorzystanie budzetu",
"strategie stawek i uczenie strategii",
"zapytania uzytkownikow oraz wykluczenia",
"reklamy RSA i zasoby reklam",
"wyniki kampanii oraz rentownosc",
]
@dataclass
class SearchBasicSettingsPlan:
campaigns: list[dict]
scope: list[dict]
out_of_scope: list[str]
knowledge_rules: list[dict]
warnings: list[str]
def to_dict(self) -> dict:
return {
"task": TASK_ID,
"task_name": TASK_NAME,
"campaigns": self.campaigns,
"scope": self.scope,
"out_of_scope": self.out_of_scope,
"knowledge_rules": self.knowledge_rules,
"warnings": self.warnings,
"changes": [],
}
@classmethod
def from_dict(cls, data: dict) -> "SearchBasicSettingsPlan":
return cls(
campaigns=data.get("campaigns", []),
scope=data.get("scope", []),
out_of_scope=data.get("out_of_scope", []),
knowledge_rules=data.get("knowledge_rules", []),
warnings=data.get("warnings", []),
)
def enum_name(value) -> str:
name = getattr(value, "name", None)
if name:
return name
return str(value)
def human_geo(value: str) -> str:
return {
"PRESENCE": "Obecnosc",
"PRESENCE_OR_INTEREST": "Obecnosc lub zainteresowanie",
"SEARCH_INTEREST": "Zainteresowanie wyszukiwaniem",
}.get(value, value)
def yes_no(value: bool) -> str:
return "TAK" if value else "NIE"
def fetch_search_campaigns(client_config: ClientConfig) -> list[dict]:
google_client = get_google_ads_client(use_proto_plus=True)
rows = run_query(
google_client,
client_config.safe_customer_id,
"""
SELECT
campaign.id,
campaign.name,
campaign.status,
campaign.advertising_channel_type,
campaign.geo_target_type_setting.positive_geo_target_type,
campaign.network_settings.target_google_search,
campaign.network_settings.target_search_network,
campaign.network_settings.target_partner_search_network,
campaign.network_settings.target_content_network
FROM campaign
WHERE campaign.advertising_channel_type = 'SEARCH'
AND campaign.status != 'REMOVED'
""",
)
campaigns = []
for row in rows:
campaign = row.campaign
positive_geo = enum_name(campaign.geo_target_type_setting.positive_geo_target_type)
campaigns.append(
{
"campaign_id": str(campaign.id),
"campaign_name": campaign.name,
"status": enum_name(campaign.status),
"positive_geo_target_type": positive_geo,
"positive_geo_target_type_label": human_geo(positive_geo),
"target_google_search": bool(campaign.network_settings.target_google_search),
"target_search_network": bool(campaign.network_settings.target_search_network),
"target_partner_search_network": bool(campaign.network_settings.target_partner_search_network),
"target_content_network": bool(campaign.network_settings.target_content_network),
}
)
return campaigns
def build_search_basic_settings_plan(client_config: ClientConfig) -> SearchBasicSettingsPlan:
warnings = []
try:
campaigns = fetch_search_campaigns(client_config)
except Exception as exc:
campaigns = []
warnings.append(f"Nie udalo sie pobrac kampanii Search z Google Ads API: {exc}")
if not campaigns:
warnings.append("Nie znaleziono kampanii Search albo nie udalo sie ich pobrac.")
rules = rules_for_task(TASK_ID)
knowledge_rules = [
{
"id": rule.id,
"topic": rule.topic,
"rule_type": rule.rule_type,
"condition": rule.condition,
"recommendation": rule.recommendation,
"risk": rule.risk,
"source": rule.source,
}
for rule in rules
]
if not knowledge_rules:
warnings.append(
"Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. "
"Uzyj `python gads.py wiedza przypisz --restart`, gdy bedziemy wybierac reguly dla Search."
)
return SearchBasicSettingsPlan(
campaigns=campaigns,
scope=SCOPE,
out_of_scope=OUT_OF_SCOPE,
knowledge_rules=knowledge_rules,
warnings=warnings,
)
def save_search_basic_settings_plan(domain: str, plan: SearchBasicSettingsPlan) -> tuple[Path, Path]:
ts = now_local()
base = client_dir(domain) / "plans"
base.mkdir(parents=True, exist_ok=True)
stem = f"{ts.strftime('%Y-%m-%d_%H-%M-%S')}_{TASK_ID}"
json_path = base / f"{stem}.json"
md_path = base / f"{stem}.md"
payload = {
"created_at": ts.isoformat(timespec="seconds"),
"client": domain,
**plan.to_dict(),
}
json_path.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
lines = [
"# Plan: Sprawdzenie podstawowych ustawien Search",
"",
f"Klient: {domain}",
f"Utworzono: {ts.isoformat(timespec='seconds')}",
"",
"## Podsumowanie",
"",
f"- Kampanie Search: {len(plan.campaigns)}",
f"- Reguly wiedzy przypisane do zadania: {len(plan.knowledge_rules)}",
"- Zmiany do wdrozenia: 0",
"",
]
if plan.warnings:
lines.extend(["## Uwagi", ""])
lines.extend(f"- {item}" for item in plan.warnings)
lines.append("")
lines.extend(["## Zakres zadania", "", "| Obszar | Co sprawdzic |", "| --- | --- |"])
for row in plan.scope:
lines.append(f"| {row.get('area', '')} | {row.get('check', '')} |")
lines.append("")
lines.extend(["## Poza zakresem tego zadania", ""])
lines.extend(f"- {item}" for item in plan.out_of_scope)
lines.append("")
if plan.campaigns:
lines.extend(
[
"## Kampanie Search",
"",
"| Kampania | Status | Lokalizacje | Google Search | Search Network | Partnerzy | Siec reklamowa |",
"| --- | --- | --- | --- | --- | --- | --- |",
]
)
for campaign in plan.campaigns:
lines.append(
f"| {campaign['campaign_name']} | {campaign['status']} | "
f"{campaign.get('positive_geo_target_type_label', campaign['positive_geo_target_type'])} | "
f"{yes_no(campaign['target_google_search'])} | "
f"{yes_no(campaign['target_search_network'])} | "
f"{yes_no(campaign['target_partner_search_network'])} | "
f"{yes_no(campaign['target_content_network'])} |"
)
lines.append("")
if plan.knowledge_rules:
lines.extend(
[
"## Reguly z bazy wiedzy",
"",
"| ID | Temat | Rekomendacja | Ryzyko |",
"| --- | --- | --- | --- |",
]
)
for rule in plan.knowledge_rules:
lines.append(
f"| {rule.get('id', '')} | {rule.get('topic', '')} | "
f"{rule.get('recommendation', '')} | {rule.get('risk', '')} |"
)
lines.append("")
md_path.write_text("\n".join(lines), encoding="utf-8")
return json_path, md_path
def print_search_basic_settings_plan(plan: SearchBasicSettingsPlan) -> None:
print("\nPlan sprawdzenia podstawowych ustawien Search")
print_table(
["Metryka", "Liczba"],
[
["Kampanie Search", str(len(plan.campaigns))],
["Reguly wiedzy", str(len(plan.knowledge_rules))],
["Zmiany do wdrozenia", "0"],
],
)
if plan.warnings:
print("\nUwagi")
print_table(["Nr", "Uwaga"], [[str(index), item] for index, item in enumerate(plan.warnings, 1)])
print("\nZakres zadania")
print_table(
["Nr", "Obszar", "Co sprawdzic"],
[[str(index), row["area"], row["check"]] for index, row in enumerate(plan.scope, 1)],
)
print("\nPoza zakresem")
print_table(["Nr", "Nie analizujemy tutaj"], [[str(index), item] for index, item in enumerate(plan.out_of_scope, 1)])
if plan.campaigns:
print("\nKampanie Search")
print_table(
["Nr", "Kampania", "Status", "Lokalizacje", "Partnerzy", "Siec reklamowa"],
[
[
str(index),
campaign["campaign_name"],
campaign["status"],
campaign.get("positive_geo_target_type_label", campaign["positive_geo_target_type"]),
yes_no(campaign["target_partner_search_network"]),
yes_no(campaign["target_content_network"]),
]
for index, campaign in enumerate(plan.campaigns, 1)
],
)
if plan.knowledge_rules:
print("\nReguly z bazy wiedzy")
print_table(
["Nr", "ID", "Temat", "Rekomendacja"],
[
[str(index), rule["id"], rule["topic"], rule["recommendation"]]
for index, rule in enumerate(plan.knowledge_rules[:10], 1)
],
)
if len(plan.knowledge_rules) > 10:
print(f"... oraz {len(plan.knowledge_rules) - 10} kolejnych regul")
def print_next_navigation(domain: str) -> None:
print("\nCo dalej:")
print(f"1. Lista zadan klienta {domain}")
print("2. Lista klientow")
print("3. Zakoncz")
print("\nKomendy:")
print(f"1 -> python gads.py analiza-klienta --client {domain}")
print("2 -> python gads.py analiza-klienta")
def apply_search_basic_settings_plan(
client_config: ClientConfig,
plan: SearchBasicSettingsPlan,
show_navigation: bool = True,
) -> None:
print("\nTo zadanie jest audytem ustawien i nie wdraza zmian na koncie Google Ads.")
changes_path = append_change_markdown(client_config.domain, TASK_NAME, [])
history_path = append_history(
client_config.domain,
{
"task": TASK_NAME,
"status": "audyt oznaczony jako wykonany",
"campaign": ", ".join(campaign["campaign_name"] for campaign in plan.campaigns[:10]),
"summary": {
"campaigns": len(plan.campaigns),
"knowledge_rules": len(plan.knowledge_rules),
"changes": 0,
},
},
)
print(f"Historia JSONL: {history_path}")
print(f"Historia Markdown: {changes_path}")
if show_navigation:
print_next_navigation(client_config.domain)
def run_check_search_basic_settings(
client_config: ClientConfig,
global_rules: dict,
plan_only: bool = False,
apply_plan_path: str | None = None,
confirm_apply: str | None = None,
show_navigation: bool = True,
) -> None:
_ = global_rules
if apply_plan_path:
if confirm_apply != "TAK":
print("Do oznaczenia audytu jako wykonanego wymagane jest --confirm-apply TAK.")
if show_navigation:
print_next_navigation(client_config.domain)
return
plan_data = json.loads(Path(apply_plan_path).read_text(encoding="utf-8"))
if plan_data.get("client") != client_config.domain:
print(f"Plan jest dla klienta {plan_data.get('client')}, a wybrano {client_config.domain}.")
if show_navigation:
print_next_navigation(client_config.domain)
return
plan = SearchBasicSettingsPlan.from_dict(plan_data)
print_search_basic_settings_plan(plan)
apply_search_basic_settings_plan(client_config, plan, show_navigation=show_navigation)
return
print(f"\nKlient: {client_config.domain}")
print("Przygotowuje plan sprawdzenia podstawowych ustawien Search...")
plan = build_search_basic_settings_plan(client_config)
print_search_basic_settings_plan(plan)
json_path, md_path = save_search_basic_settings_plan(client_config.domain, plan)
print(f"\nPlan JSON: {json_path}")
print(f"Plan Markdown: {md_path}")
append_history(
client_config.domain,
{
"task": TASK_NAME,
"status": "plan przygotowany",
"campaign": ", ".join(campaign["campaign_name"] for campaign in plan.campaigns[:10]),
"summary": {
"campaigns": len(plan.campaigns),
"knowledge_rules": len(plan.knowledge_rules),
"changes": 0,
},
},
)
if plan_only:
print("\nTryb plan-only: zmiany nie zostaly wdrozone.")
if show_navigation:
print_next_navigation(client_config.domain)
return
print("\nBrak zmian do wdrozenia. To zadanie tworzy plan audytu podstawowych ustawien.")
if show_navigation:
print_next_navigation(client_config.domain)

View File

@@ -0,0 +1,71 @@
# Zmiany 2026-05-15
## 23:00 - Synchronizacja kampanii PLA_CL1
| klient | kampania | czynnosc | grupa reklam | produkt |
| --- | --- | --- | --- | --- |
| innsi.pl | [PLA_CL1] aurumaris | utworzono grupe reklam | Kojący tonik do twarzy Neuropeptide Tonic 200 ml Aurumaris Professional | 3576 |
| innsi.pl | [PLA_CL1] aurumaris | utworzono grupe reklam | Delikatna pianka do twarzy Neuropeptide Cleansing Foam 200ml Aurumaris Professional | 3577 |
| innsi.pl | [PLA_CL1] aurumaris | utworzono grupe reklam | Kremowa maska do twarzy 5D Skin Filler Mask 200ml Aurumaris Professional | 3578 |
| innsi.pl | [PLA_CL1] aurumaris | utworzono grupe reklam | Peeling do twarzy Stem Cell Skin Peeling 200ml Aurumaris Professional | 3580 |
| innsi.pl | [PLA_CL1] aurumaris | utworzono grupe reklam | Rozświetlająca maska do twarzy Super Brightening Mask 100ml Aurumaris Professional | 3581 |
| innsi.pl | [PLA_CL1] aurumaris | utworzono grupe reklam | Aurumaris Professional Total Remake Smart Serum z mikroigłami — regenerujące serum do twarzy 30 ml | 3582 |
| innsi.pl | [PLA_CL1] aurumaris | utworzono grupe reklam | Krem przeciwzmarszczkowy Tripeptide Skin DNA Rejuvenation 50ml Aurumaris Professional | 3584 |
| innsi.pl | [PLA_CL1] aurumaris | utworzono grupe reklam | Krem do pielęgnacji cery twarzy Ultra Hydration Structurizing Cream 50ml Aurumaris Professional | 3586 |
| innsi.pl | [PLA_CL1] mina_ibrow | utworzono grupe reklam | Hybrydowa farbka do brwi i rzęs Black 14ml MINA IBROW | 3377 |
| innsi.pl | [PLA_CL1] mina_ibrow | utworzono grupe reklam | Hybrydowa farba do brwi i rzęs Dark Brown 14ml MINA IBROW farbka henna | 3378 |
| innsi.pl | [PLA_CL1] mina_ibrow | utworzono grupe reklam | Hybrydowa farbka do brwi i rzęs Medium Brown 14ml MINA IBROW | 3379 |
| innsi.pl | [PLA_CL1] mina_ibrow | utworzono grupe reklam | Hybrydowa farbka do brwi i rzęs Light Brown 14ml MINA IBROW | 3380 |
| innsi.pl | [PLA_CL1] mina_ibrow | utworzono grupe reklam | Hybrydowa farbka do brwi i rzęs Light Blonde 14ml MINA IBROW | 3381 |
| innsi.pl | [PLA_CL1] mina_ibrow | utworzono grupe reklam | Hybrydowa farbka do brwi i rzęs Graphite 14ml MINA IBROW | 3382 |
## 23:07 - Optymalizacja tytulow produktow
| klient | produkt | pole | obecnie | docelowo |
| --- | --- | --- | --- | --- |
| innsi.pl | 2720 | title | Maść z naturalnymi olejkami Regeneracja suchej skóry 70g Arkada | Arkada maść z naturalnymi olejkami do regeneracji suchej skóry 70 g |
| innsi.pl | 1814 | title | Zestaw płynów HydraPure Oczyszczanie Wodorowe | HydraPure zestaw płynów do oczyszczania wodorowego |
| innsi.pl | 2016 | title | Olejek do paznokci Mykobooster 10ml Podopharm | Podopharm Mykobooster olejek do paznokci 10 ml |
| innsi.pl | 1413 | title | Henna żelowa Brown 15ml Refectocil | Refectocil henna żelowa Brown do brwi i rzęs 15 ml |
| innsi.pl | 3133 | title | Nożyczki ES-03 NGHIA EXPORT Activ | NGHIA Export Activ ES-03 nożyczki kosmetyczne |
| innsi.pl | 93 | title | Wonder Sculpt Paletka cieni Karaja nr 01 | Karaja Wonder Sculpt paletka cieni do powiek nr 01 |
| innsi.pl | 2524 | title | Taśmy modelująco liftingujące beige Secret Lift IBRA Makeup | IBRA Makeup Secret Lift taśmy modelująco-liftingujące beige |
| innsi.pl | 1554 | title | Henna Anna brązowa proszkowa Hornung 20 g | Hornung Anna henna proszkowa brązowa 20 g |
| innsi.pl | 2026 | title | Krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125ml Podopharm | Podopharm krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125 ml |
| innsi.pl | 3560 | title | Pre-Depilatory Gel żel przed depilacją 200ml Starpil | Starpil Pre-Depilatory Gel żel przed depilacją 200 ml |
## 23:10 - Optymalizacja kategorii Google
| klient | produkt | pole | obecnie | docelowo |
| --- | --- | --- | --- | --- |
| innsi.pl | 2720 | google_product_category | | Health & Beauty > Personal Care > Cosmetics > Skin Care > Lotion & Moisturizer |
| innsi.pl | 1814 | google_product_category | | Health & Beauty > Personal Care > Cosmetics > Skin Care |
| innsi.pl | 2016 | google_product_category | | Health & Beauty > Personal Care > Cosmetics > Nail Care |
| innsi.pl | 1413 | google_product_category | | Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup |
| innsi.pl | 3133 | google_product_category | | Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools |
| innsi.pl | 93 | google_product_category | | Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup |
| innsi.pl | 2524 | google_product_category | | Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools |
| innsi.pl | 1554 | google_product_category | | Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup |
| innsi.pl | 2026 | google_product_category | | Health & Beauty > Personal Care > Cosmetics > Skin Care > Lotion & Moisturizer |
| innsi.pl | 3560 | google_product_category | | Health & Beauty > Personal Care > Cosmetics > Skin Care |
## 23:12 - Uzupelnienie unit pricing
| klient | produkt | pole | obecnie | docelowo |
| --- | --- | --- | --- | --- |
| innsi.pl | 3582 | unit_pricing | | 30 ml / 100 ml |
| innsi.pl | 3622 | unit_pricing | | 8 ml / 100 ml |
| innsi.pl | 2721 | unit_pricing | | 11 ml / 100 ml |
| innsi.pl | 2018 | unit_pricing | | 20 ml / 100 ml |
| innsi.pl | 3378 | unit_pricing | | 14 ml / 100 ml |
| innsi.pl | 3623 | unit_pricing | | 15 ml / 100 ml |
| innsi.pl | 1883 | unit_pricing | | 500 ml / 100 ml |
| innsi.pl | 2720 | unit_pricing | | 70 g / 100 g |
## 23:15 - Sprawdzenie wykorzystania budzetu
| klient | kampania | czynnosc | grupa reklam | produkt |
| --- | --- | --- | --- | --- |
| innsi.pl | [PLA_CL1] gen_factor | Zmien budzet dzienny | | 30.00 PLN -> 39.00 PLN |
| innsi.pl | [PLA_CL1] podopharm | Zmien budzet dzienny | | 30.00 PLN -> 39.00 PLN |

View File

@@ -0,0 +1,51 @@
id,offer_id,title,availability,channel,content_language,target_country,feed_label,brand,google_product_category,custom_label_0,custom_label_1,custom_label_2,custom_label_3,custom_label_4,link
,3576,Kojący tonik do twarzy Neuropeptide Tonic 200 ml Aurumaris Professional,,,,,,,,,aurumaris,,,,
,3577,Delikatna pianka do twarzy Neuropeptide Cleansing Foam 200ml Aurumaris Professional,,,,,,,,,aurumaris,,,,
,3578,Kremowa maska do twarzy 5D Skin Filler Mask 200ml Aurumaris Professional,,,,,,,,,aurumaris,,,,
,3580,Peeling do twarzy Stem Cell Skin Peeling 200ml Aurumaris Professional,,,,,,,,,aurumaris,,,,
,3581,Rozświetlająca maska do twarzy Super Brightening Mask 100ml Aurumaris Professional,,,,,,,,,aurumaris,,,,
,3582,Aurumaris Professional Total Remake Smart Serum z mikroigłami — regenerujące serum do twarzy 30 ml,,,,,,,2958,,aurumaris,,,,
,3584,Krem przeciwzmarszczkowy Tripeptide Skin DNA Rejuvenation 50ml Aurumaris Professional,,,,,,,,,aurumaris,,,,
,3586,Krem do pielęgnacji cery twarzy Ultra Hydration Structurizing Cream 50ml Aurumaris Professional,,,,,,,,,aurumaris,,,,
,2660,Gen Factor Green krem regenerujący do twarzy z colostrum 75ml,,,,,,,2592,,gen_factor,,,,
,2950,Gen Factor Red krem regenerujący do twarzy z colostrum i kawiorem 75ml,,,,,,,2592,,gen_factor,,,,
,3008,Gen Factor Blue — przeciwzapalny krem do skóry problematycznej z colostrum | Personal Care,,,,,,,481,,gen_factor,,,,
,3120,Gen Factor Cinnamic krem do twarzy na przebarwienia i zaczerwienienia z kwasem cynamonowym,,,,,,,2958,,gen_factor,,,,
,3260,Gen Factor Violet krem przeciwzmarszczkowy do twarzy z fitoestrogenami 75ml,,,,,,,2592,,gen_factor,,,,
,3261,Neutralizator do kwasów pH Stoperr Gen Factor,,,,,,,,,gen_factor,,,,
,3262,Odtłuszczacz do skóry pH Starter Gen Factor,,,,,,,,,gen_factor,,,,
,3393,Gen Factor Orange krem przeciwzmarszczkowy do twarzy z bakuchiolem 75ml,,,,,,,2592,,gen_factor,,,,
,3514,Gen Factor Yellow — krem na przebarwienia i nierówny koloryt skóry | Personal Care z HGF,,,,,,,2958,,gen_factor,,,,
,3377,Hybrydowa farbka do brwi i rzęs Black 14ml MINA IBROW,,,,,,,,,mina_ibrow,,,,
,3378,Hybrydowa farba do brwi i rzęs Dark Brown 14ml MINA IBROW farbka henna,,,,,,,Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > Eyebrow Enhancers,,mina_ibrow,,,,
,3379,Hybrydowa farbka do brwi i rzęs Medium Brown 14ml MINA IBROW,,,,,,,,,mina_ibrow,,,,
,3380,Hybrydowa farbka do brwi i rzęs Light Brown 14ml MINA IBROW,,,,,,,,,mina_ibrow,,,,
,3381,Hybrydowa farbka do brwi i rzęs Light Blonde 14ml MINA IBROW,,,,,,,,,mina_ibrow,,,,
,3382,Hybrydowa farbka do brwi i rzęs Graphite 14ml MINA IBROW,,,,,,,,,mina_ibrow,,,,
,2014,Zmiękczające perełki do kąpieli dłoni i stóp z mocznikiem i witaminą E 400g Podopharm,,,,,,,,,podopharm,,,,
,2015,Podopharm krem-maska do dłoni z adaptogenami i colostrum regenerująca 75ml,,,,,,,2592,,podopharm,,,,
,2016,Olejek do paznokci Mykobooster 10ml Podopharm,,,,,,,,,podopharm,,,,
,2017,Fluid na wrastające paznokcie 10ml Podopharm,,,,,,,,,podopharm,,,,
,2018,Onygen Podopharm krem na onycholizę do paznokci z colostrum bovinum 20ml,,,,,,,478,,podopharm,,,,
,2019,Mykostatyczna tinktura do paznokci 10ml Podopharm,,,,,,,,,podopharm,,,,
,2020,Podopharm krem do stóp z lipidami nawilżający do suchej skóry 100ml,,,,,,,2592,,podopharm,,,,
,2021,Intensywnie wzmacniające serum do paznokci 10ml Podopharm,,,,,,,,,podopharm,,,,
,2022,Podopharm maść z colostrum regenerująca kojąca 60ml do stóp łokci kolan,,,,,,,Health & Beauty > Personal Care > Cosmetics > Bath & Body > Foot Care,,podopharm,,,,
,2023,Podopharm maść na popękane pięty z mocznikiem 25% do zrogowaciałej skóry stóp 100ml,,,,,,,2592,,podopharm,,,,
,2024,Krem do stóp z colostrum 150ml Podopharm,,,,,,,,,podopharm,,,,
,2025,Krem do stóp z colostrum 75ml Podopharm,,,,,,,,,podopharm,,,,
,2026,Krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125ml Podopharm,,,,,,,,,podopharm,,,,
,2027,Podopharm krem pianka do stóp z mocznikiem 15% na zrogowacenia pięty 125ml,,,,,,,Health & Beauty > Personal Care > Cosmetics > Bath & Body > Foot Care,,podopharm,,,,
,2029,Maść do stóp z mocznikiem 10% 75ml Podopharm,,,,,,,,,podopharm,,,,
,2031,Podopharm maska do dłoni i stóp z mikrosrebrem antybakteryjna 75ml,,,,,,,2592,,podopharm,,,,
,2032,Podopharm specjalistyczny krem do suchej skóry nawilżający z lipidami 150ml,,,,,,,2592,,podopharm,,,,
,2033,Regenerujące serum do ciała 200ml Podopharm,,,,,,,,,podopharm,,,,
,2034,Podopharm serum do rąk i paznokci w piance wzmacniające 125ml,,,,,,,478,,podopharm,,,,
,2035,Podopharm krem barierowy do twarzy z colostrum 50ml skóra sucha atopowa,,,,,,,Health & Beauty > Personal Care > Cosmetics > Skin Care > Face Moisturizers,,podopharm,,,,
,2192,Intensywnie wzmacniający lakier do paznokci 9ml Podopharm,,,,,,,,,podopharm,,,,
,2194,"Odżywcze serum do ust z colostrum 4,9g Podopharm",,,,,,,,,podopharm,,,,
,2521,Podopharm VERRU IMMUNO pasta do pielęgnacji skóry z colostrum i tują 12ml,,,,,,,567,,podopharm,,,,
,2681,Peeling solno-cukrowy Luxury SPA do dłoni i stóp z masłem shea i goji 300g Podopharm,,,,,,,,,podopharm,,,,
,2749,Spray do stóp i dłoni Mykobooster 100ml Podopharm,,,,,,,,,podopharm,,,,
,3544,Podopharm OLEUM HERBAL olejek podologiczny aktywny do pielęgnacji stóp 10ml,,,,,,,478,,podopharm,,,,
,3545,Emolientowy balsam w sztyfcie SOS SKINFLEX 50ml Podopharm,,,,,,,,,podopharm,,,,
1 id offer_id title availability channel content_language target_country feed_label brand google_product_category custom_label_0 custom_label_1 custom_label_2 custom_label_3 custom_label_4 link
2 3576 Kojący tonik do twarzy Neuropeptide Tonic 200 ml Aurumaris Professional aurumaris
3 3577 Delikatna pianka do twarzy Neuropeptide Cleansing Foam 200ml Aurumaris Professional aurumaris
4 3578 Kremowa maska do twarzy 5D Skin Filler Mask 200ml Aurumaris Professional aurumaris
5 3580 Peeling do twarzy Stem Cell Skin Peeling 200ml Aurumaris Professional aurumaris
6 3581 Rozświetlająca maska do twarzy Super Brightening Mask 100ml Aurumaris Professional aurumaris
7 3582 Aurumaris Professional Total Remake Smart Serum z mikroigłami — regenerujące serum do twarzy 30 ml 2958 aurumaris
8 3584 Krem przeciwzmarszczkowy Tripeptide Skin DNA Rejuvenation 50ml Aurumaris Professional aurumaris
9 3586 Krem do pielęgnacji cery twarzy Ultra Hydration Structurizing Cream 50ml Aurumaris Professional aurumaris
10 2660 Gen Factor Green krem regenerujący do twarzy z colostrum 75ml 2592 gen_factor
11 2950 Gen Factor Red krem regenerujący do twarzy z colostrum i kawiorem 75ml 2592 gen_factor
12 3008 Gen Factor Blue — przeciwzapalny krem do skóry problematycznej z colostrum | Personal Care 481 gen_factor
13 3120 Gen Factor Cinnamic krem do twarzy na przebarwienia i zaczerwienienia z kwasem cynamonowym 2958 gen_factor
14 3260 Gen Factor Violet krem przeciwzmarszczkowy do twarzy z fitoestrogenami 75ml 2592 gen_factor
15 3261 Neutralizator do kwasów pH Stoperr Gen Factor gen_factor
16 3262 Odtłuszczacz do skóry pH Starter Gen Factor gen_factor
17 3393 Gen Factor Orange krem przeciwzmarszczkowy do twarzy z bakuchiolem 75ml 2592 gen_factor
18 3514 Gen Factor Yellow — krem na przebarwienia i nierówny koloryt skóry | Personal Care z HGF 2958 gen_factor
19 3377 Hybrydowa farbka do brwi i rzęs Black 14ml MINA IBROW mina_ibrow
20 3378 Hybrydowa farba do brwi i rzęs Dark Brown 14ml MINA IBROW farbka henna Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > Eyebrow Enhancers mina_ibrow
21 3379 Hybrydowa farbka do brwi i rzęs Medium Brown 14ml MINA IBROW mina_ibrow
22 3380 Hybrydowa farbka do brwi i rzęs Light Brown 14ml MINA IBROW mina_ibrow
23 3381 Hybrydowa farbka do brwi i rzęs Light Blonde 14ml MINA IBROW mina_ibrow
24 3382 Hybrydowa farbka do brwi i rzęs Graphite 14ml MINA IBROW mina_ibrow
25 2014 Zmiękczające perełki do kąpieli dłoni i stóp z mocznikiem i witaminą E 400g Podopharm podopharm
26 2015 Podopharm krem-maska do dłoni z adaptogenami i colostrum regenerująca 75ml 2592 podopharm
27 2016 Olejek do paznokci Mykobooster 10ml Podopharm podopharm
28 2017 Fluid na wrastające paznokcie 10ml Podopharm podopharm
29 2018 Onygen Podopharm krem na onycholizę do paznokci z colostrum bovinum 20ml 478 podopharm
30 2019 Mykostatyczna tinktura do paznokci 10ml Podopharm podopharm
31 2020 Podopharm krem do stóp z lipidami nawilżający do suchej skóry 100ml 2592 podopharm
32 2021 Intensywnie wzmacniające serum do paznokci 10ml Podopharm podopharm
33 2022 Podopharm maść z colostrum regenerująca kojąca 60ml do stóp łokci kolan Health & Beauty > Personal Care > Cosmetics > Bath & Body > Foot Care podopharm
34 2023 Podopharm maść na popękane pięty z mocznikiem 25% do zrogowaciałej skóry stóp 100ml 2592 podopharm
35 2024 Krem do stóp z colostrum 150ml Podopharm podopharm
36 2025 Krem do stóp z colostrum 75ml Podopharm podopharm
37 2026 Krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125ml Podopharm podopharm
38 2027 Podopharm krem pianka do stóp z mocznikiem 15% na zrogowacenia pięty 125ml Health & Beauty > Personal Care > Cosmetics > Bath & Body > Foot Care podopharm
39 2029 Maść do stóp z mocznikiem 10% 75ml Podopharm podopharm
40 2031 Podopharm maska do dłoni i stóp z mikrosrebrem antybakteryjna 75ml 2592 podopharm
41 2032 Podopharm specjalistyczny krem do suchej skóry nawilżający z lipidami 150ml 2592 podopharm
42 2033 Regenerujące serum do ciała 200ml Podopharm podopharm
43 2034 Podopharm serum do rąk i paznokci w piance wzmacniające 125ml 478 podopharm
44 2035 Podopharm krem barierowy do twarzy z colostrum 50ml skóra sucha atopowa Health & Beauty > Personal Care > Cosmetics > Skin Care > Face Moisturizers podopharm
45 2192 Intensywnie wzmacniający lakier do paznokci 9ml Podopharm podopharm
46 2194 Odżywcze serum do ust z colostrum 4,9g Podopharm podopharm
47 2521 Podopharm VERRU IMMUNO pasta do pielęgnacji skóry z colostrum i tują 12ml 567 podopharm
48 2681 Peeling solno-cukrowy Luxury SPA do dłoni i stóp z masłem shea i goji 300g Podopharm podopharm
49 2749 Spray do stóp i dłoni Mykobooster 100ml Podopharm podopharm
50 3544 Podopharm OLEUM HERBAL olejek podologiczny aktywny do pielęgnacji stóp 10ml 478 podopharm
51 3545 Emolientowy balsam w sztyfcie SOS SKINFLEX 50ml Podopharm podopharm

View File

@@ -4,3 +4,19 @@
{"timestamp": "2026-05-15T10:10:19+02:00", "task": "Sprawdzenie pomiaru konwersji", "status": "plan przygotowany", "campaign": "", "summary": {"conversion_actions": 8, "findings": 10, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T10:22:08+02:00", "task": "Sprawdzenie pomiaru konwersji", "status": "plan przygotowany", "campaign": "", "summary": {"conversion_actions": 8, "findings": 10, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T10:34:58+02:00", "task": "Sprawdzenie pomiaru konwersji", "status": "plan przygotowany", "campaign": "", "summary": {"conversion_actions": 8, "findings": 10, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T22:56:24+02:00", "task": "Sprawdzenie ustawien", "status": "plan przygotowany", "campaign": "[PLA_CL1] gen_factor, [PLA_CL1] podopharm, [PLA_CL1] aurumaris, [PLA_CL1] mina_ibrow", "summary": {"campaigns": 4, "changes": 0}}
{"timestamp": "2026-05-15T22:57:01+02:00", "task": "Sprawdzenie podstawowych ustawien Search", "status": "plan przygotowany", "campaign": "[Search] brand, [DSA] produkty", "summary": {"campaigns": 2, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T22:57:44+02:00", "task": "Sprawdzenie pomiaru konwersji", "status": "plan przygotowany", "campaign": "", "summary": {"conversion_actions": 8, "findings": 10, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T22:58:58+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "plan przygotowany", "campaign": "[PLA_CL1] gen_factor, [PLA_CL1] podopharm, [PLA_CL1] aurumaris, [PLA_CL1] mina_ibrow", "created_at": "2026-05-15T22:58:52+02:00", "summary": {"campaigns": 4, "products": 50, "create": 14, "enable": 0, "pause": 0, "rename": 0}}
{"timestamp": "2026-05-15T23:00:11+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "wdrozono zmiany", "campaign": "[PLA_CL1] gen_factor, [PLA_CL1] podopharm, [PLA_CL1] aurumaris, [PLA_CL1] mina_ibrow", "summary": {"created": 14, "enabled": 0, "create_errors": 0, "paused": 0, "renamed": 0}}
{"timestamp": "2026-05-15T23:03:03+02:00", "task": "Automatyzacja tROAS per grupa reklam PLA", "status": "plan przygotowany", "campaign": "", "summary": {"ad_groups": 50, "target_changes": 0, "rollback_changes": 0, "watchlist": 49, "knowledge_rules": 1}}
{"timestamp": "2026-05-15T23:04:01+02:00", "task": "Optymalizacja tytulow produktow", "status": "plan przygotowany", "product": "2720, 1814, 2016, 1413, 3133, 93, 2524, 1554, 2026, 3560", "summary": {"products": 10, "title_changes": 10, "category_changes": 0, "unit_pricing_changes": 0}}
{"timestamp": "2026-05-15T23:07:03+02:00", "task": "Optymalizacja tytulow produktow", "status": "wdrozono zmiany", "product": "2720, 1814, 2016, 1413, 3133, 93, 2524, 1554, 2026, 3560", "summary": {"applied": 10, "skipped": 0}}
{"timestamp": "2026-05-15T23:07:26+02:00", "task": "Optymalizacja kategorii Google", "status": "plan przygotowany", "product": "2720, 1814, 2016, 1413, 3133, 93, 2524, 1554, 2026, 3560", "summary": {"products": 10, "title_changes": 0, "category_changes": 10, "unit_pricing_changes": 0}}
{"timestamp": "2026-05-15T23:10:21+02:00", "task": "Optymalizacja kategorii Google", "status": "wdrozono zmiany", "product": "2720, 1814, 2016, 1413, 3133, 93, 2524, 1554, 2026, 3560", "summary": {"applied": 10, "skipped": 0}}
{"timestamp": "2026-05-15T23:11:34+02:00", "task": "Uzupelnienie unit pricing", "status": "plan przygotowany", "product": "3582, 3622, 2721, 2018, 3378, 3623, 3393, 3594, 1883, 2720", "summary": {"products": 10, "title_changes": 0, "category_changes": 0, "unit_pricing_changes": 8}}
{"timestamp": "2026-05-15T23:12:19+02:00", "task": "Uzupelnienie unit pricing", "status": "wdrozono zmiany", "product": "3582, 3622, 2721, 2018, 3378, 3623, 1883, 2720", "summary": {"applied": 8, "skipped": 0}}
{"timestamp": "2026-05-15T23:13:26+02:00", "task": "Sprawdzenie wykorzystania budzetu", "status": "plan przygotowany", "campaign": "[PLA_CL1] gen_factor, [PLA_CL1] podopharm, [PMax] products (catch-all), [Search] brand, [PLA_CL1] aurumaris, [PLA_CL1] mina_ibrow", "summary": {"campaigns": 6, "knowledge_rules": 1, "changes": 0}}
{"timestamp": "2026-05-15T23:15:37+02:00", "task": "Sprawdzenie wykorzystania budzetu", "status": "wdrozono zmiany budzetu", "campaign": "[PLA_CL1] gen_factor, [PLA_CL1] podopharm", "budget_changes": [{"campaign_id": "23796378384", "campaign_name": "[PLA_CL1] gen_factor", "budget_id": "15547616548", "target_daily_budget_micros": 39000000}, {"campaign_id": "23796424236", "campaign_name": "[PLA_CL1] podopharm", "budget_id": "15547649923", "target_daily_budget_micros": 39000000}], "summary": {"campaigns": 6, "knowledge_rules": 1, "budget_changes": 2, "changed": 2, "errors": 0}}
{"timestamp": "2026-05-15T23:16:10+02:00", "task": "Sprawdzenie strategii stawek", "status": "plan przygotowany", "campaign": "[PLA_CL1] gen_factor, [PLA_CL1] podopharm, [PLA_CL1] aurumaris, [PLA_CL1] mina_ibrow, [Search] brand, [PMax] products (catch-all)", "summary": {"campaigns": 6, "knowledge_rules": 3, "target_changes": 0}}
{"timestamp": "2026-05-15T23:16:49+02:00", "task": "Sprawdzenie anomalii konta", "status": "plan przygotowany", "campaign": "[Search] brand, [PLA_CL1] gen_factor, [PLA_CL1] gen_factor, [PLA_CL1] gen_factor, [PLA_CL1] podopharm", "summary": {"campaigns": 4, "anomalies": 5, "knowledge_rules": 0, "changes": 0}}

View File

@@ -0,0 +1,46 @@
{
"created_at": "2026-05-15T22:56:24+02:00",
"client": "innsi.pl",
"task": "check_pla_settings",
"campaigns": [
{
"campaign_id": "23796378384",
"campaign_name": "[PLA_CL1] gen_factor",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23796424236",
"campaign_name": "[PLA_CL1] podopharm",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23847226734",
"campaign_name": "[PLA_CL1] mina_ibrow",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
}
],
"changes": [],
"skipped_rules": [],
"warnings": []
}

View File

@@ -0,0 +1,18 @@
# Plan: Sprawdzenie ustawien kampanii PLA
Klient: innsi.pl
Utworzono: 2026-05-15T22:56:24+02:00
## Podsumowanie
- Kampanie PLA: 4
- Korekty do wdrozenia: 0
## Kampanie PLA
| Kampania | Status | Lokalizacje | Priorytet |
| --- | --- | --- | --- |
| [PLA_CL1] gen_factor | ENABLED | Obecność | Wysoki |
| [PLA_CL1] podopharm | ENABLED | Obecność | Wysoki |
| [PLA_CL1] aurumaris | ENABLED | Obecność | Wysoki |
| [PLA_CL1] mina_ibrow | ENABLED | Obecność | Wysoki |

View File

@@ -0,0 +1,60 @@
{
"created_at": "2026-05-15T22:57:01+02:00",
"client": "innsi.pl",
"task": "check_search_basic_settings",
"task_name": "Sprawdzenie podstawowych ustawien Search",
"campaigns": [
{
"campaign_id": "9941029102",
"campaign_name": "[Search] brand",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecnosc",
"target_google_search": true,
"target_search_network": false,
"target_partner_search_network": false,
"target_content_network": false
},
{
"campaign_id": "21805796156",
"campaign_name": "[DSA] produkty",
"status": "PAUSED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecnosc",
"target_google_search": true,
"target_search_network": false,
"target_partner_search_network": false,
"target_content_network": false
}
],
"changes": [],
"scope": [
{
"area": "Lokalizacje",
"check": "Wymagaj kierowania lokalizacji na Obecnosc; inne tryby przygotuj jako korekte do wdrozenia."
},
{
"area": "Sieci",
"check": "Wymagaj wylaczonej sieci reklamowej i wylaczonych partnerow wyszukiwania w kampaniach Search."
},
{
"area": "Jezyki",
"check": "Sprawdz, czy ustawienia jezykowe sa zgodne z rynkiem klienta."
},
{
"area": "Harmonogram reklam",
"check": "Sprawdz, czy harmonogram jest swiadomie ustawiony albo czy kampania dziala caly czas."
}
],
"out_of_scope": [
"budzety i wykorzystanie budzetu",
"strategie stawek i uczenie strategii",
"zapytania uzytkownikow oraz wykluczenia",
"reklamy RSA i zasoby reklam",
"wyniki kampanii oraz rentownosc"
],
"knowledge_rules": [],
"warnings": [
"Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Uzyj `python gads.py wiedza przypisz --restart`, gdy bedziemy wybierac reguly dla Search."
]
}

View File

@@ -0,0 +1,38 @@
# Plan: Sprawdzenie podstawowych ustawien Search
Klient: innsi.pl
Utworzono: 2026-05-15T22:57:01+02:00
## Podsumowanie
- Kampanie Search: 2
- Reguly wiedzy przypisane do zadania: 0
- Zmiany do wdrozenia: 0
## Uwagi
- Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Uzyj `python gads.py wiedza przypisz --restart`, gdy bedziemy wybierac reguly dla Search.
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Lokalizacje | Wymagaj kierowania lokalizacji na Obecnosc; inne tryby przygotuj jako korekte do wdrozenia. |
| Sieci | Wymagaj wylaczonej sieci reklamowej i wylaczonych partnerow wyszukiwania w kampaniach Search. |
| Jezyki | Sprawdz, czy ustawienia jezykowe sa zgodne z rynkiem klienta. |
| Harmonogram reklam | Sprawdz, czy harmonogram jest swiadomie ustawiony albo czy kampania dziala caly czas. |
## Poza zakresem tego zadania
- budzety i wykorzystanie budzetu
- strategie stawek i uczenie strategii
- zapytania uzytkownikow oraz wykluczenia
- reklamy RSA i zasoby reklam
- wyniki kampanii oraz rentownosc
## Kampanie Search
| Kampania | Status | Lokalizacje | Google Search | Search Network | Partnerzy | Siec reklamowa |
| --- | --- | --- | --- | --- | --- | --- |
| [Search] brand | ENABLED | Obecnosc | TAK | NIE | NIE | NIE |
| [DSA] produkty | PAUSED | Obecnosc | TAK | NIE | NIE | NIE |

View File

@@ -0,0 +1,346 @@
{
"created_at": "2026-05-15T22:57:44+02:00",
"client": "innsi.pl",
"task": "check_conversion_tracking",
"task_name": "Sprawdzenie pomiaru konwersji",
"currency_code": "PLN",
"conversion_actions": [
{
"conversion_action_id": "6589806390",
"resource_name": "customers/1333436346/conversionActions/6589806390",
"name": "G4 - INNSI (web) realizacja_transakcji",
"status": "ENABLED",
"type": "GOOGLE_ANALYTICS_4_CUSTOM",
"category": "BEGIN_CHECKOUT",
"primary_for_goal": false,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 90,
"view_window_days": 1,
"attribution_model": "UNKNOWN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni"
],
"recommendation": "Sprawdz, czy akcja nadal powinna byc aktywna i czy tag uruchamia sie na wlasciwym zdarzeniu."
},
{
"conversion_action_id": "6702700055",
"resource_name": "customers/1333436346/conversionActions/6702700055",
"name": "Clicks to call",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "CONTACT",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni",
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "6721285127",
"resource_name": "customers/1333436346/conversionActions/6721285127",
"name": "Local actions - Other engagements",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "ENGAGEMENT",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni",
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "6699486379",
"resource_name": "customers/1333436346/conversionActions/6699486379",
"name": "Local actions - Directions",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "GET_DIRECTIONS",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni",
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "6713429278",
"resource_name": "customers/1333436346/conversionActions/6713429278",
"name": "Local actions - Website visits",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "PAGE_VIEW",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni",
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "477116571",
"resource_name": "customers/1333436346/conversionActions/477116571",
"name": "GA4 - purchase",
"status": "ENABLED",
"type": "GOOGLE_ANALYTICS_4_PURCHASE",
"category": "PURCHASE",
"primary_for_goal": false,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 90,
"view_window_days": 1,
"attribution_model": "UNKNOWN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 272.28,
"all_conversion_value_30d": 16217.25,
"is_collecting_data": true,
"problem_flags": [
"ok"
],
"recommendation": "Bez pilnej zmiany; zostaw jako kontekst albo konwersje dodatkowa."
},
{
"conversion_action_id": "6645666216",
"resource_name": "customers/1333436346/conversionActions/6645666216",
"name": "GADS - Purchase",
"status": "ENABLED",
"type": "WEBPAGE",
"category": "PURCHASE",
"primary_for_goal": true,
"include_in_conversions_metric": true,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 30,
"view_window_days": 1,
"attribution_model": "GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN",
"conversions_30d": 107.2,
"conversion_value_30d": 19444.92,
"all_conversions_30d": 107.2,
"all_conversion_value_30d": 19444.92,
"is_collecting_data": true,
"problem_flags": [
"ok"
],
"recommendation": "Dane zakupowe wygladaja na podstawowy sygnal optymalizacji; kontroluj wartosc i duplikacje."
},
{
"conversion_action_id": "6589806387",
"resource_name": "customers/1333436346/conversionActions/6589806387",
"name": "innsi.pl - GA4 (web) dodanie_do_koszyka",
"status": "HIDDEN",
"type": "GOOGLE_ANALYTICS_4_CUSTOM",
"category": "DEFAULT",
"primary_for_goal": false,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 90,
"view_window_days": 1,
"attribution_model": "UNKNOWN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"akcja nieaktywna"
],
"recommendation": "Zostaw nieaktywna, jesli jest historyczna; w przeciwnym razie uporzadkuj konfiguracje konwersji."
}
],
"action_summary": [
{
"metric": "akcje konwersji",
"count": 8
},
{
"metric": "aktywne",
"count": 7
},
{
"metric": "podstawowe",
"count": 5
},
{
"metric": "zbieraja dane 30 dni",
"count": 2
},
{
"metric": "z problemami",
"count": 6
},
{
"metric": "podstawowe z danymi",
"count": 1
}
],
"findings": [
{
"severity": "wysokie",
"area": "CONTACT",
"item": "Clicks to call",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "ENGAGEMENT",
"item": "Local actions - Other engagements",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "GET_DIRECTIONS",
"item": "Local actions - Directions",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "PAGE_VIEW",
"item": "Local actions - Website visits",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "srednie",
"area": "BEGIN_CHECKOUT",
"item": "G4 - INNSI (web) realizacja_transakcji",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz, czy akcja nadal powinna byc aktywna i czy tag uruchamia sie na wlasciwym zdarzeniu."
},
{
"severity": "srednie",
"area": "CONTACT",
"item": "Clicks to call",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "srednie",
"area": "DEFAULT",
"item": "innsi.pl - GA4 (web) dodanie_do_koszyka",
"problem": "akcja nieaktywna",
"recommendation": "Zostaw nieaktywna, jesli jest historyczna; w przeciwnym razie uporzadkuj konfiguracje konwersji."
},
{
"severity": "srednie",
"area": "ENGAGEMENT",
"item": "Local actions - Other engagements",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "srednie",
"area": "GET_DIRECTIONS",
"item": "Local actions - Directions",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "srednie",
"area": "PAGE_VIEW",
"item": "Local actions - Website visits",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
}
],
"changes": [],
"scope": [
{
"area": "Akcje konwersji",
"check": "Pobierz akcje konwersji z Google Ads, ich status, typ, kategorie i ustawienie podstawowa/dodatkowa."
},
{
"area": "Dane 30 dni",
"check": "Sprawdz, czy akcje konwersji zbieraja konwersje, wartosc konwersji i wszystkie konwersje z ostatnich 30 dni."
},
{
"area": "Wartosc konwersji",
"check": "Oznacz konwersje zakupowe i e-commerce bez wartosci albo bez waluty jako problem do poprawy pomiaru."
},
{
"area": "Jakosc optymalizacji",
"check": "Oznacz brak aktywnych konwersji podstawowych, brak danych 30 dni oraz podejrzana duplikacje podobnych akcji."
},
{
"area": "Rekomendacje",
"check": "Przygotuj rekomendacje decyzyjne do konfiguracji pomiaru; skrypt nie wdraza zmian automatycznie."
}
],
"knowledge_rules": [],
"warnings": [
"Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Reguly dotyczace pomiaru konwersji warto dopisac po pierwszych audytach."
]
}

View File

@@ -0,0 +1,64 @@
# Plan: Sprawdzenie pomiaru konwersji
Klient: innsi.pl
Utworzono: 2026-05-15T22:57:44+02:00
## Podsumowanie
- Akcje konwersji: 8
- Problemy / rekomendacje: 10
- Reguly wiedzy przypisane do zadania: 0
- Zmiany do wdrozenia: 0
## Uwagi
- Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Reguly dotyczace pomiaru konwersji warto dopisac po pierwszych audytach.
## Zakres audytu
| Obszar | Co sprawdzic |
| --- | --- |
| Akcje konwersji | Pobierz akcje konwersji z Google Ads, ich status, typ, kategorie i ustawienie podstawowa/dodatkowa. |
| Dane 30 dni | Sprawdz, czy akcje konwersji zbieraja konwersje, wartosc konwersji i wszystkie konwersje z ostatnich 30 dni. |
| Wartosc konwersji | Oznacz konwersje zakupowe i e-commerce bez wartosci albo bez waluty jako problem do poprawy pomiaru. |
| Jakosc optymalizacji | Oznacz brak aktywnych konwersji podstawowych, brak danych 30 dni oraz podejrzana duplikacje podobnych akcji. |
| Rekomendacje | Przygotuj rekomendacje decyzyjne do konfiguracji pomiaru; skrypt nie wdraza zmian automatycznie. |
## Podsumowanie akcji
| Metryka | Liczba |
| --- | --- |
| akcje konwersji | 8 |
| aktywne | 7 |
| podstawowe | 5 |
| zbieraja dane 30 dni | 2 |
| z problemami | 6 |
| podstawowe z danymi | 1 |
## Problemy i rekomendacje
| Waznosc | Obszar | Element | Problem | Rekomendacja |
| --- | --- | --- | --- | --- |
| wysokie | CONTACT | Clicks to call | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | ENGAGEMENT | Local actions - Other engagements | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | GET_DIRECTIONS | Local actions - Directions | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | PAGE_VIEW | Local actions - Website visits | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| srednie | BEGIN_CHECKOUT | G4 - INNSI (web) realizacja_transakcji | brak danych 30 dni | Sprawdz, czy akcja nadal powinna byc aktywna i czy tag uruchamia sie na wlasciwym zdarzeniu. |
| srednie | CONTACT | Clicks to call | brak danych 30 dni | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| srednie | DEFAULT | innsi.pl - GA4 (web) dodanie_do_koszyka | akcja nieaktywna | Zostaw nieaktywna, jesli jest historyczna; w przeciwnym razie uporzadkuj konfiguracje konwersji. |
| srednie | ENGAGEMENT | Local actions - Other engagements | brak danych 30 dni | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| srednie | GET_DIRECTIONS | Local actions - Directions | brak danych 30 dni | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| srednie | PAGE_VIEW | Local actions - Website visits | brak danych 30 dni | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
## Akcje konwersji
| Nazwa | Status | Typ | Kategoria | Podstawowa | W konwersjach | Konw. 30d | Wartosc 30d | Wszystkie konw. 30d | Wartosc wszystkich 30d | Okno klik. | Okno view | Problemy |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| G4 - INNSI (web) realizacja_transakcji | ENABLED | GOOGLE_ANALYTICS_4_CUSTOM | BEGIN_CHECKOUT | NIE | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 90 | 1 | brak danych 30 dni |
| Clicks to call | ENABLED | GOOGLE_HOSTED | CONTACT | TAK | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 7 | brak danych 30 dni, podstawowa bez konwersji |
| Local actions - Other engagements | ENABLED | GOOGLE_HOSTED | ENGAGEMENT | TAK | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 7 | brak danych 30 dni, podstawowa bez konwersji |
| Local actions - Directions | ENABLED | GOOGLE_HOSTED | GET_DIRECTIONS | TAK | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 7 | brak danych 30 dni, podstawowa bez konwersji |
| Local actions - Website visits | ENABLED | GOOGLE_HOSTED | PAGE_VIEW | TAK | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 7 | brak danych 30 dni, podstawowa bez konwersji |
| GA4 - purchase | ENABLED | GOOGLE_ANALYTICS_4_PURCHASE | PURCHASE | NIE | NIE | 0.00 | 0.00 PLN | 272.28 | 16217.25 PLN | 90 | 1 | ok |
| GADS - Purchase | ENABLED | WEBPAGE | PURCHASE | TAK | TAK | 107.20 | 19444.92 PLN | 107.20 | 19444.92 PLN | 30 | 1 | ok |
| innsi.pl - GA4 (web) dodanie_do_koszyka | HIDDEN | GOOGLE_ANALYTICS_4_CUSTOM | DEFAULT | NIE | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 90 | 1 | akcja nieaktywna |

View File

@@ -0,0 +1,203 @@
{
"created_at": "2026-05-15T22:58:58+02:00",
"client": "innsi.pl",
"products_count": 50,
"task": "sync_pla_cl1",
"campaigns": [
{
"id": "23796378384",
"name": "[PLA_CL1] gen_factor",
"status": "ENABLED",
"allowed": [
"gen_factor"
],
"variant": ""
},
{
"id": "23796424236",
"name": "[PLA_CL1] podopharm",
"status": "ENABLED",
"allowed": [
"podopharm"
],
"variant": ""
},
{
"id": "23796468366",
"name": "[PLA_CL1] aurumaris",
"status": "ENABLED",
"allowed": [
"aurumaris"
],
"variant": ""
},
{
"id": "23847226734",
"name": "[PLA_CL1] mina_ibrow",
"status": "ENABLED",
"allowed": [
"mina_ibrow"
],
"variant": ""
}
],
"groups_total": 58,
"groups_with_product_id": 54,
"create_plan": [
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"ad_group_name": "Kojący tonik do twarzy Neuropeptide Tonic 200 ml Aurumaris Professional",
"product_id": "3576",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"ad_group_name": "Delikatna pianka do twarzy Neuropeptide Cleansing Foam 200ml Aurumaris Professional",
"product_id": "3577",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"ad_group_name": "Kremowa maska do twarzy 5D Skin Filler Mask 200ml Aurumaris Professional",
"product_id": "3578",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"ad_group_name": "Peeling do twarzy Stem Cell Skin Peeling 200ml Aurumaris Professional",
"product_id": "3580",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"ad_group_name": "Rozświetlająca maska do twarzy Super Brightening Mask 100ml Aurumaris Professional",
"product_id": "3581",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"ad_group_name": "Aurumaris Professional Total Remake Smart Serum z mikroigłami — regenerujące serum do twarzy 30 ml",
"product_id": "3582",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"ad_group_name": "Krem przeciwzmarszczkowy Tripeptide Skin DNA Rejuvenation 50ml Aurumaris Professional",
"product_id": "3584",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"ad_group_name": "Krem do pielęgnacji cery twarzy Ultra Hydration Structurizing Cream 50ml Aurumaris Professional",
"product_id": "3586",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23847226734",
"campaign_name": "[PLA_CL1] mina_ibrow",
"ad_group_name": "Hybrydowa farbka do brwi i rzęs Black 14ml MINA IBROW",
"product_id": "3377",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23847226734",
"campaign_name": "[PLA_CL1] mina_ibrow",
"ad_group_name": "Hybrydowa farba do brwi i rzęs Dark Brown 14ml MINA IBROW farbka henna",
"product_id": "3378",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23847226734",
"campaign_name": "[PLA_CL1] mina_ibrow",
"ad_group_name": "Hybrydowa farbka do brwi i rzęs Medium Brown 14ml MINA IBROW",
"product_id": "3379",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23847226734",
"campaign_name": "[PLA_CL1] mina_ibrow",
"ad_group_name": "Hybrydowa farbka do brwi i rzęs Light Brown 14ml MINA IBROW",
"product_id": "3380",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23847226734",
"campaign_name": "[PLA_CL1] mina_ibrow",
"ad_group_name": "Hybrydowa farbka do brwi i rzęs Light Blonde 14ml MINA IBROW",
"product_id": "3381",
"reason": "brakuje aktywnej grupy reklam"
},
{
"campaign_id": "23847226734",
"campaign_name": "[PLA_CL1] mina_ibrow",
"ad_group_name": "Hybrydowa farbka do brwi i rzęs Graphite 14ml MINA IBROW",
"product_id": "3382",
"reason": "brakuje aktywnej grupy reklam"
}
],
"enable_plan": [],
"pause_plan": [],
"rename_plan": [],
"warnings": [
"Grupy reklam bez dopasowania w adsPRO: 4.",
"Grupy reklam w zlej kampanii (CL1 nie pasuje): 18."
],
"unmatched_groups": [
{
"ad_group_id": "195935652893",
"ad_group_name": "Grupa reklam 1",
"ad_group_status": "PAUSED",
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"allowed": [
"aurumaris"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "197134082072",
"ad_group_name": "Grupa reklam 1",
"ad_group_status": "PAUSED",
"campaign_id": "23847226734",
"campaign_name": "[PLA_CL1] mina_ibrow",
"allowed": [
"mina_ibrow"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "199865422030",
"ad_group_name": "Grupa reklam 1",
"ad_group_status": "PAUSED",
"campaign_id": "23796378384",
"campaign_name": "[PLA_CL1] gen_factor",
"allowed": [
"gen_factor"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "204485812988",
"ad_group_name": "Grupa reklam 1",
"ad_group_status": "PAUSED",
"campaign_id": "23796424236",
"campaign_name": "[PLA_CL1] podopharm",
"allowed": [
"podopharm"
],
"variant": "",
"offer_id": ""
}
]
}

View File

@@ -0,0 +1,55 @@
# Plan: Synchronizacja kampanii PLA_CL1
Klient: innsi.pl
Utworzono: 2026-05-15T22:58:58+02:00
## Podsumowanie
- Kampanie PLA_CL1: 4
- Produkty z adsPRO: 50
- Grupy reklam obecnie: 58
- Grupy reklam z identyfikatorem produktu: 54
- Do utworzenia: 14
- Do włączenia: 0
- Do wstrzymania: 0
- Do zmiany nazwy: 0
## Uwagi
- Grupy reklam bez dopasowania w adsPRO: 4.
- Grupy reklam w zlej kampanii (CL1 nie pasuje): 18.
## Podsumowanie po kampaniach
| Kampania | Utworz | Wlacz | Wstrzymaj | Zmien nazwe |
| --- | ---: | ---: | ---: | ---: |
| [PLA_CL1] aurumaris | 8 | 0 | 0 | 0 |
| [PLA_CL1] mina_ibrow | 6 | 0 | 0 | 0 |
## Grupy reklam bez dopasowania w adsPRO
| Kampania | Grupa reklam | Status | Identyfikator produktu |
| --- | --- | --- | --- |
| [PLA_CL1] aurumaris | Grupa reklam 1 | PAUSED | |
| [PLA_CL1] mina_ibrow | Grupa reklam 1 | PAUSED | |
| [PLA_CL1] gen_factor | Grupa reklam 1 | PAUSED | |
| [PLA_CL1] podopharm | Grupa reklam 1 | PAUSED | |
## Grupy reklam do utworzenia
| Kampania | Grupa reklam | Produkt | Powod |
| --- | --- | --- | --- |
| [PLA_CL1] aurumaris | Kojący tonik do twarzy Neuropeptide Tonic 200 ml Aurumaris Professional | 3576 | brakuje aktywnej grupy reklam |
| [PLA_CL1] aurumaris | Delikatna pianka do twarzy Neuropeptide Cleansing Foam 200ml Aurumaris Professional | 3577 | brakuje aktywnej grupy reklam |
| [PLA_CL1] aurumaris | Kremowa maska do twarzy 5D Skin Filler Mask 200ml Aurumaris Professional | 3578 | brakuje aktywnej grupy reklam |
| [PLA_CL1] aurumaris | Peeling do twarzy Stem Cell Skin Peeling 200ml Aurumaris Professional | 3580 | brakuje aktywnej grupy reklam |
| [PLA_CL1] aurumaris | Rozświetlająca maska do twarzy Super Brightening Mask 100ml Aurumaris Professional | 3581 | brakuje aktywnej grupy reklam |
| [PLA_CL1] aurumaris | Aurumaris Professional Total Remake Smart Serum z mikroigłami — regenerujące serum do twarzy 30 ml | 3582 | brakuje aktywnej grupy reklam |
| [PLA_CL1] aurumaris | Krem przeciwzmarszczkowy Tripeptide Skin DNA Rejuvenation 50ml Aurumaris Professional | 3584 | brakuje aktywnej grupy reklam |
| [PLA_CL1] aurumaris | Krem do pielęgnacji cery twarzy Ultra Hydration Structurizing Cream 50ml Aurumaris Professional | 3586 | brakuje aktywnej grupy reklam |
| [PLA_CL1] mina_ibrow | Hybrydowa farbka do brwi i rzęs Black 14ml MINA IBROW | 3377 | brakuje aktywnej grupy reklam |
| [PLA_CL1] mina_ibrow | Hybrydowa farba do brwi i rzęs Dark Brown 14ml MINA IBROW farbka henna | 3378 | brakuje aktywnej grupy reklam |
| [PLA_CL1] mina_ibrow | Hybrydowa farbka do brwi i rzęs Medium Brown 14ml MINA IBROW | 3379 | brakuje aktywnej grupy reklam |
| [PLA_CL1] mina_ibrow | Hybrydowa farbka do brwi i rzęs Light Brown 14ml MINA IBROW | 3380 | brakuje aktywnej grupy reklam |
| [PLA_CL1] mina_ibrow | Hybrydowa farbka do brwi i rzęs Light Blonde 14ml MINA IBROW | 3381 | brakuje aktywnej grupy reklam |
| [PLA_CL1] mina_ibrow | Hybrydowa farbka do brwi i rzęs Graphite 14ml MINA IBROW | 3382 | brakuje aktywnej grupy reklam |

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,91 @@
# Plan: Automatyzacja tROAS per grupa reklam PLA
Klient: innsi.pl
Utworzono: 2026-05-15T23:03:03+02:00
## Podsumowanie
- Grupy reklam Shopping z danymi 30 dni: 50
- Kandydaci do podniesienia tROAS: 0
- Kandydaci do rollbacku: 0
- Watchlista bez akcji: 49
- Reguly wiedzy przypisane do zadania: 1
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Zakres | Analizuje tylko aktywne grupy reklam w aktywnych kampaniach Standard Shopping. |
| Dane 30 dni | Liczy realny ROAS grupy reklam z kosztu i wartosci konwersji z ostatnich 30 dni. |
| 100 klikow | Grupy reklam z mniej niz 100 klikami od poczatku trafiaja tylko na watchliste. |
| Trigger 10 konwersji | Podbicie tROAS wymaga co najmniej 10 nowych konwersji wzgledem lokalnego baseline. |
| Stopniowanie | Jedna analiza moze podniesc tROAS grupy reklam maksymalnie o 0.5. |
| Rollback | Jesli po zmianie realny ROAS z 30 dni spada ponizej ustawionego tROAS, plan proponuje przywrocenie poprzedniej wartosci. |
## Watchlista bez akcji
| Kampania | Grupa reklam | Klikniecia all-time | Konwersje 30 dni | Real ROAS | Powod |
| --- | --- | --- | --- | --- | --- |
| [PLA_CL1] gen_factor | Gen Factor Red krem regenerujący do twarzy z colostrum i kawiorem 75ml | 32 | 2.00 | 4.40 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm maść z colostrum regenerująca kojąca 60ml do stóp łokci kolan | 31 | 1.00 | 3.29 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] gen_factor | Gen Factor Green krem regenerujący do twarzy z colostrum 75ml | 29 | 2.00 | 5.34 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm VERRU IMMUNO pasta do pielęgnacji skóry z colostrum i tują 12ml | 24 | 1.00 | 0.89 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm maść na popękane pięty z mocznikiem 25% do zrogowaciałej skóry stóp 100ml | 23 | 1.00 | 1.16 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] gen_factor | Gen Factor Yellow — krem na przebarwienia i nierówny koloryt skóry | Personal Care z HGF | 20 | 1.25 | 5.64 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] gen_factor | Gen Factor Violet krem przeciwzmarszczkowy do twarzy z fitoestrogenami 75ml | 19 | 2.25 | 11.66 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm OLEUM HERBAL olejek podologiczny aktywny do pielęgnacji stóp 10ml | 16 | 1.00 | 2.66 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] gen_factor | Gen Factor Blue — przeciwzapalny krem do skóry problematycznej z colostrum | Personal Care | 15 | 0.25 | 4.05 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm krem do stóp z lipidami nawilżający do suchej skóry 100ml | 14 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm specjalistyczny krem do suchej skóry nawilżający z lipidami 150ml | 14 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] gen_factor | Gen Factor Orange krem przeciwzmarszczkowy do twarzy z bakuchiolem 75ml | 13 | 1.25 | 10.17 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Olejek do paznokci Mykobooster 10ml Podopharm | 10 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Fluid na wrastające paznokcie 10ml Podopharm | 9 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125ml Podopharm | 8 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Spray do stóp i dłoni Mykobooster 100ml Podopharm | 6 | 1.00 | 3.17 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm krem-maska do dłoni z adaptogenami i colostrum regenerująca 75ml | 6 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm krem pianka do stóp z mocznikiem 15% na zrogowacenia pięty 125ml | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm maska do dłoni i stóp z mikrosrebrem antybakteryjna 75ml | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Krem do stóp z colostrum 150ml Podopharm | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm krem barierowy do twarzy z colostrum 50ml skóra sucha atopowa | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Peeling solno-cukrowy Luxury SPA do dłoni i stóp z masłem shea i goji 300g Podopharm | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Regenerujące serum do ciała 200ml Podopharm | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] aurumaris | Aurumaris Professional Total Remake Smart Serum z mikroigłami — regenerujące serum do twarzy 30 ml | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] aurumaris | Delikatna pianka do twarzy Neuropeptide Cleansing Foam 200ml Aurumaris Professional | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] aurumaris | Kojący tonik do twarzy Neuropeptide Tonic 200 ml Aurumaris Professional | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] aurumaris | Krem do pielęgnacji cery twarzy Ultra Hydration Structurizing Cream 50ml Aurumaris Professional | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] aurumaris | Krem przeciwzmarszczkowy Tripeptide Skin DNA Rejuvenation 50ml Aurumaris Professional | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] aurumaris | Kremowa maska do twarzy 5D Skin Filler Mask 200ml Aurumaris Professional | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] aurumaris | Peeling do twarzy Stem Cell Skin Peeling 200ml Aurumaris Professional | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] aurumaris | Rozświetlająca maska do twarzy Super Brightening Mask 100ml Aurumaris Professional | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] gen_factor | Gen Factor Cinnamic krem do twarzy na przebarwienia i zaczerwienienia z kwasem cynamonowym | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] gen_factor | Neutralizator do kwasów pH Stoperr Gen Factor | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] gen_factor | Odtłuszczacz do skóry pH Starter Gen Factor | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] mina_ibrow | Hybrydowa farba do brwi i rzęs Dark Brown 14ml MINA IBROW farbka henna | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] mina_ibrow | Hybrydowa farbka do brwi i rzęs Black 14ml MINA IBROW | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] mina_ibrow | Hybrydowa farbka do brwi i rzęs Graphite 14ml MINA IBROW | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] mina_ibrow | Hybrydowa farbka do brwi i rzęs Light Blonde 14ml MINA IBROW | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] mina_ibrow | Hybrydowa farbka do brwi i rzęs Light Brown 14ml MINA IBROW | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] mina_ibrow | Hybrydowa farbka do brwi i rzęs Medium Brown 14ml MINA IBROW | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Emolientowy balsam w sztyfcie SOS SKINFLEX 50ml Podopharm | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Intensywnie wzmacniające serum do paznokci 10ml Podopharm | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Intensywnie wzmacniający lakier do paznokci 9ml Podopharm | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Krem do stóp z colostrum 75ml Podopharm | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Maść do stóp z mocznikiem 10% 75ml Podopharm | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Mykostatyczna tinktura do paznokci 10ml Podopharm | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Odżywcze serum do ust z colostrum 4,9g Podopharm | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Podopharm serum do rąk i paznokci w piance wzmacniające 125ml | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] podopharm | Zmiękczające perełki do kąpieli dłoni i stóp z mocznikiem i witaminą E 400g Podopharm | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
## Reguly z bazy wiedzy
| ID | Temat | Rekomendacja | Ryzyko |
| --- | --- | --- | --- |
| smart_bidding_sequential_budget_and_target_changes | strategie_stawek | Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana. | Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji. |
## Poza zakresem tego zadania
- Performance Max
- Search
- kampanie Shopping bez grup reklam
- automatyczne wdrozenie bez akceptacji uzytkownika
- pauzowanie grup reklam z niskim albo zerowym ROAS

View File

@@ -0,0 +1,216 @@
{
"created_at": "2026-05-15T23:04:01+02:00",
"client": "innsi.pl",
"task": "optimize_product_titles",
"task_name": "Optymalizacja tytulow produktow",
"products": [
{
"offer_id": "2720",
"default_name": "Maść z naturalnymi olejkami Regeneracja suchej skóry 70g Arkada",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 76,
"impressions": 10999,
"cost": 92.98
},
{
"offer_id": "1814",
"default_name": "Zestaw płynów HydraPure Oczyszczanie Wodorowe",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 27,
"impressions": 1139,
"cost": 38.76
},
{
"offer_id": "2016",
"default_name": "Olejek do paznokci Mykobooster 10ml Podopharm",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 24,
"impressions": 3396,
"cost": 29.8
},
{
"offer_id": "1413",
"default_name": "Henna żelowa Brown 15ml Refectocil",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 24,
"impressions": 2970,
"cost": 51.94
},
{
"offer_id": "3133",
"default_name": "Nożyczki ES-03 NGHIA EXPORT Activ",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 22,
"impressions": 441,
"cost": 31.97
},
{
"offer_id": "93",
"default_name": "Wonder Sculpt Paletka cieni Karaja nr 01",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 19,
"impressions": 2500,
"cost": 11.91
},
{
"offer_id": "2524",
"default_name": "Taśmy modelująco liftingujące beige Secret Lift IBRA Makeup",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 19,
"impressions": 1881,
"cost": 32.92
},
{
"offer_id": "1554",
"default_name": "Henna Anna brązowa proszkowa Hornung 20 g",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 18,
"impressions": 1831,
"cost": 39.04
},
{
"offer_id": "2026",
"default_name": "Krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125ml Podopharm",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 18,
"impressions": 1483,
"cost": 27.65
},
{
"offer_id": "3560",
"default_name": "Pre-Depilatory Gel żel przed depilacją 200ml Starpil",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 18,
"impressions": 840,
"cost": 9.46
}
],
"title_changes": [
{
"offer_id": "2720",
"field": "title",
"current_value": "Maść z naturalnymi olejkami Regeneracja suchej skóry 70g Arkada",
"target_value": "Arkada maść z naturalnymi olejkami do regeneracji suchej skóry 70 g",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1814",
"field": "title",
"current_value": "Zestaw płynów HydraPure Oczyszczanie Wodorowe",
"target_value": "HydraPure zestaw płynów do oczyszczania wodorowego",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "2016",
"field": "title",
"current_value": "Olejek do paznokci Mykobooster 10ml Podopharm",
"target_value": "Podopharm Mykobooster olejek do paznokci 10 ml",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1413",
"field": "title",
"current_value": "Henna żelowa Brown 15ml Refectocil",
"target_value": "Refectocil henna żelowa Brown do brwi i rzęs 15 ml",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "3133",
"field": "title",
"current_value": "Nożyczki ES-03 NGHIA EXPORT Activ",
"target_value": "NGHIA Export Activ ES-03 nożyczki kosmetyczne",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "93",
"field": "title",
"current_value": "Wonder Sculpt Paletka cieni Karaja nr 01",
"target_value": "Karaja Wonder Sculpt paletka cieni do powiek nr 01",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "2524",
"field": "title",
"current_value": "Taśmy modelująco liftingujące beige Secret Lift IBRA Makeup",
"target_value": "IBRA Makeup Secret Lift taśmy modelująco-liftingujące beige",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1554",
"field": "title",
"current_value": "Henna Anna brązowa proszkowa Hornung 20 g",
"target_value": "Hornung Anna henna proszkowa brązowa 20 g",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "2026",
"field": "title",
"current_value": "Krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125ml Podopharm",
"target_value": "Podopharm krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125 ml",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "3560",
"field": "title",
"current_value": "Pre-Depilatory Gel żel przed depilacją 200ml Starpil",
"target_value": "Starpil Pre-Depilatory Gel żel przed depilacją 200 ml",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
}
],
"category_changes": [],
"unit_pricing_changes": [],
"skipped": [],
"warnings": [
"Czesc tytulow wymaga decyzji agenta AI; skrypt nie przepisuje tytulu bazowego jako optymalizacji."
]
}

View File

@@ -0,0 +1,31 @@
# Plan: Optymalizacja tytulow produktow
Klient: innsi.pl
Utworzono: 2026-05-15T23:04:01+02:00
## Podsumowanie
- Produkty z adsPRO: 10
- Tytuly do zmiany: 10
- Kategorie do uzupelnienia: 0
- Unit pricing do zmiany: 0
- Pominiete: 0
## Uwagi
- Czesc tytulow wymaga decyzji agenta AI; skrypt nie przepisuje tytulu bazowego jako optymalizacji.
## Tytuly do decyzji lub zmiany
| Produkt | Obecnie | Docelowo | Powod |
| --- | --- | --- | --- |
| 2720 | Maść z naturalnymi olejkami Regeneracja suchej skóry 70g Arkada | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 1814 | Zestaw płynów HydraPure Oczyszczanie Wodorowe | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 2016 | Olejek do paznokci Mykobooster 10ml Podopharm | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 1413 | Henna żelowa Brown 15ml Refectocil | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 3133 | Nożyczki ES-03 NGHIA EXPORT Activ | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 93 | Wonder Sculpt Paletka cieni Karaja nr 01 | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 2524 | Taśmy modelująco liftingujące beige Secret Lift IBRA Makeup | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 1554 | Henna Anna brązowa proszkowa Hornung 20 g | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 2026 | Krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125ml Podopharm | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 3560 | Pre-Depilatory Gel żel przed depilacją 200ml Starpil | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |

View File

@@ -0,0 +1,216 @@
{
"created_at": "2026-05-15T23:07:26+02:00",
"client": "innsi.pl",
"task": "optimize_product_categories",
"task_name": "Optymalizacja kategorii Google",
"products": [
{
"offer_id": "2720",
"default_name": "Maść z naturalnymi olejkami Regeneracja suchej skóry 70g Arkada",
"custom_title": "Arkada maść z naturalnymi olejkami do regeneracji suchej skóry 70 g",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 76,
"impressions": 10999,
"cost": 92.98
},
{
"offer_id": "1814",
"default_name": "Zestaw płynów HydraPure Oczyszczanie Wodorowe",
"custom_title": "HydraPure zestaw płynów do oczyszczania wodorowego",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 27,
"impressions": 1139,
"cost": 38.76
},
{
"offer_id": "2016",
"default_name": "Olejek do paznokci Mykobooster 10ml Podopharm",
"custom_title": "Podopharm Mykobooster olejek do paznokci 10 ml",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 24,
"impressions": 3396,
"cost": 29.8
},
{
"offer_id": "1413",
"default_name": "Henna żelowa Brown 15ml Refectocil",
"custom_title": "Refectocil henna żelowa Brown do brwi i rzęs 15 ml",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 24,
"impressions": 2970,
"cost": 51.94
},
{
"offer_id": "3133",
"default_name": "Nożyczki ES-03 NGHIA EXPORT Activ",
"custom_title": "NGHIA Export Activ ES-03 nożyczki kosmetyczne",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 22,
"impressions": 441,
"cost": 31.97
},
{
"offer_id": "93",
"default_name": "Wonder Sculpt Paletka cieni Karaja nr 01",
"custom_title": "Karaja Wonder Sculpt paletka cieni do powiek nr 01",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 19,
"impressions": 2500,
"cost": 11.91
},
{
"offer_id": "2524",
"default_name": "Taśmy modelująco liftingujące beige Secret Lift IBRA Makeup",
"custom_title": "IBRA Makeup Secret Lift taśmy modelująco-liftingujące beige",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 19,
"impressions": 1881,
"cost": 32.92
},
{
"offer_id": "1554",
"default_name": "Henna Anna brązowa proszkowa Hornung 20 g",
"custom_title": "Hornung Anna henna proszkowa brązowa 20 g",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 18,
"impressions": 1831,
"cost": 39.04
},
{
"offer_id": "2026",
"default_name": "Krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125ml Podopharm",
"custom_title": "Podopharm krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125 ml",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 18,
"impressions": 1483,
"cost": 27.65
},
{
"offer_id": "3560",
"default_name": "Pre-Depilatory Gel żel przed depilacją 200ml Starpil",
"custom_title": "Starpil Pre-Depilatory Gel żel przed depilacją 200 ml",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 18,
"impressions": 840,
"cost": 9.46
}
],
"title_changes": [],
"category_changes": [
{
"offer_id": "2720",
"field": "google_product_category",
"current_value": "",
"target_value": "Health & Beauty > Personal Care > Cosmetics > Skin Care > Lotion & Moisturizer",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1814",
"field": "google_product_category",
"current_value": "",
"target_value": "Health & Beauty > Personal Care > Cosmetics > Skin Care",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "2016",
"field": "google_product_category",
"current_value": "",
"target_value": "Health & Beauty > Personal Care > Cosmetics > Nail Care",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1413",
"field": "google_product_category",
"current_value": "",
"target_value": "Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "3133",
"field": "google_product_category",
"current_value": "",
"target_value": "Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "93",
"field": "google_product_category",
"current_value": "",
"target_value": "Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "2524",
"field": "google_product_category",
"current_value": "",
"target_value": "Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1554",
"field": "google_product_category",
"current_value": "",
"target_value": "Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "2026",
"field": "google_product_category",
"current_value": "",
"target_value": "Health & Beauty > Personal Care > Cosmetics > Skin Care > Lotion & Moisturizer",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "3560",
"field": "google_product_category",
"current_value": "",
"target_value": "Health & Beauty > Personal Care > Cosmetics > Skin Care",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
}
],
"unit_pricing_changes": [],
"skipped": [],
"warnings": [
"Kategorie Google wybiera agent AI; skrypt nie zgaduje ich automatycznie."
]
}

View File

@@ -0,0 +1,31 @@
# Plan: Optymalizacja kategorii Google
Klient: innsi.pl
Utworzono: 2026-05-15T23:07:26+02:00
## Podsumowanie
- Produkty z adsPRO: 10
- Tytuly do zmiany: 0
- Kategorie do uzupelnienia: 10
- Unit pricing do zmiany: 0
- Pominiete: 0
## Uwagi
- Kategorie Google wybiera agent AI; skrypt nie zgaduje ich automatycznie.
## Kategorie Google do decyzji agenta AI
| Produkt | Obecnie | Decyzja agenta AI | Powod |
| --- | --- | --- | --- |
| 2720 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 1814 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 2016 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 1413 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 3133 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 93 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 2524 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 1554 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 2026 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 3560 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |

View File

@@ -0,0 +1,215 @@
{
"created_at": "2026-05-15T23:11:34+02:00",
"client": "innsi.pl",
"task": "fill_product_unit_pricing",
"task_name": "Uzupelnienie unit pricing",
"products": [
{
"product_id": 19282,
"offer_id": "3582",
"default_name": "Intensywnie regenerujące serum z mikroigłami Total Remake Smart Serum Nano-Needles 30ml Aurumaris Professional",
"custom_title": "Aurumaris Professional Total Remake Smart Serum z mikroigłami — regenerujące serum do twarzy 30 ml",
"google_product_category": "2958",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 130,
"clicks_all_time": 586
},
{
"product_id": 19149,
"offer_id": "3622",
"default_name": "Olejek regenerujący dla paznokci z onycholizą 8 ml ONISTOP",
"custom_title": "ONISTOP Olejek na onycholizę paznokci, regenerujący 8 ml",
"google_product_category": "Health & Beauty > Personal Care > Cosmetics > Nail Care",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 267,
"clicks_all_time": 274
},
{
"product_id": 19262,
"offer_id": "2721",
"default_name": "Serum kolagenowe TC 16 Regeneracja skóry i paznokci 11ml Arkada",
"custom_title": "Arkada Serum TC16 kolagenowe do regeneracji skóry i paznokci 11ml",
"google_product_category": "478",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 198,
"clicks_all_time": 226
},
{
"product_id": 25841,
"offer_id": "2018",
"default_name": "Podopharm Onygen krem do paznokci dłoni i stóp z colostrum 20 ml",
"custom_title": "Onygen Podopharm krem na onycholizę do paznokci z colostrum bovinum 20ml",
"google_product_category": "478",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 101,
"clicks_all_time": 157
},
{
"product_id": 19136,
"offer_id": "3378",
"default_name": "Hybrydowa farbka do brwi i rzęs Dark Brown 14ml MINA IBROW",
"custom_title": "Hybrydowa farba do brwi i rzęs Dark Brown 14ml MINA IBROW farbka henna",
"google_product_category": "Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup > Eyebrow Enhancers",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 118,
"clicks_all_time": 140
},
{
"product_id": 19339,
"offer_id": "3623",
"default_name": "Olejek regenerujący dla paznokci z onycholizą 15 ml ONISTOP",
"custom_title": "ONISTOP Olejek na onycholizę paznokci, regenerujący 15 ml",
"google_product_category": "Health & Beauty > Personal Care > Cosmetics > Nail Care",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 116,
"clicks_all_time": 124
},
{
"product_id": 25842,
"offer_id": "3393",
"default_name": "Gen Factor Personal Care Orange krem do twarzy z retinolem",
"custom_title": "Gen Factor Orange krem przeciwzmarszczkowy do twarzy z bakuchiolem 75ml",
"google_product_category": "2592",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 18,
"clicks_all_time": 121
},
{
"product_id": 19269,
"offer_id": "3594",
"default_name": "Zestaw Manicure Japoński P.Shine",
"custom_title": "Zestaw do manicure japońskiego P.Shine profesjonalny japoński manicure",
"google_product_category": "Health & Beauty > Personal Care > Cosmetics > Nail Care",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 90,
"clicks_all_time": 107
},
{
"product_id": 19337,
"offer_id": "1883",
"default_name": "Aceton kosmetyczny 500ml La Lill",
"custom_title": "La Lill aceton kosmetyczny do usuwania lakieru hybrydowego 500ml",
"google_product_category": "478",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 55,
"clicks_all_time": 99
},
{
"product_id": 19142,
"offer_id": "2720",
"default_name": "Maść z naturalnymi olejkami Regeneracja suchej skóry 70g Arkada",
"custom_title": "Arkada maść z naturalnymi olejkami do regeneracji suchej skóry 70 g",
"google_product_category": "Health & Beauty > Personal Care > Cosmetics > Skin Care > Lotion & Moisturizer",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 68,
"clicks_all_time": 76
}
],
"title_changes": [],
"category_changes": [],
"unit_pricing_changes": [
{
"offer_id": "3582",
"field": "unit_pricing",
"title": "Intensywnie regenerujące serum z mikroigłami Total Remake Smart Serum Nano-Needles 30ml Aurumaris Professional",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "30 ml",
"unit_pricing_base_measure": "100 ml",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
},
{
"offer_id": "3622",
"field": "unit_pricing",
"title": "Olejek regenerujący dla paznokci z onycholizą 8 ml ONISTOP",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "8 ml",
"unit_pricing_base_measure": "100 ml",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
},
{
"offer_id": "2721",
"field": "unit_pricing",
"title": "Serum kolagenowe TC 16 Regeneracja skóry i paznokci 11ml Arkada",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "11 ml",
"unit_pricing_base_measure": "100 ml",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
},
{
"offer_id": "2018",
"field": "unit_pricing",
"title": "Podopharm Onygen krem do paznokci dłoni i stóp z colostrum 20 ml",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "20 ml",
"unit_pricing_base_measure": "100 ml",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
},
{
"offer_id": "3378",
"field": "unit_pricing",
"title": "Hybrydowa farbka do brwi i rzęs Dark Brown 14ml MINA IBROW",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "14 ml",
"unit_pricing_base_measure": "100 ml",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
},
{
"offer_id": "3623",
"field": "unit_pricing",
"title": "Olejek regenerujący dla paznokci z onycholizą 15 ml ONISTOP",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "15 ml",
"unit_pricing_base_measure": "100 ml",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
},
{
"offer_id": "1883",
"field": "unit_pricing",
"title": "Aceton kosmetyczny 500ml La Lill",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "500 ml",
"unit_pricing_base_measure": "100 ml",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
},
{
"offer_id": "2720",
"field": "unit_pricing",
"title": "Maść z naturalnymi olejkami Regeneracja suchej skóry 70g Arkada",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "70 g",
"unit_pricing_base_measure": "100 g",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
}
],
"skipped": [
{
"offer_id": "3393",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "3594",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
}
],
"warnings": [
"Unit pricing zostanie zapisany w adsPRO dopiero po akceptacji planu."
]
}

View File

@@ -0,0 +1,36 @@
# Plan: Uzupelnienie unit pricing
Klient: innsi.pl
Utworzono: 2026-05-15T23:11:34+02:00
## Podsumowanie
- Produkty z adsPRO: 10
- Tytuly do zmiany: 0
- Kategorie do uzupelnienia: 0
- Unit pricing do zmiany: 8
- Pominiete: 2
## Uwagi
- Unit pricing zostanie zapisany w adsPRO dopiero po akceptacji planu.
## Unit pricing do zmiany
| Produkt | Measure | Base measure | Powod |
| --- | --- | --- | --- |
| 3582 | 30 ml | 100 ml | brak unit pricing; wartosc wyliczona z nazwy produktu |
| 3622 | 8 ml | 100 ml | brak unit pricing; wartosc wyliczona z nazwy produktu |
| 2721 | 11 ml | 100 ml | brak unit pricing; wartosc wyliczona z nazwy produktu |
| 2018 | 20 ml | 100 ml | brak unit pricing; wartosc wyliczona z nazwy produktu |
| 3378 | 14 ml | 100 ml | brak unit pricing; wartosc wyliczona z nazwy produktu |
| 3623 | 15 ml | 100 ml | brak unit pricing; wartosc wyliczona z nazwy produktu |
| 1883 | 500 ml | 100 ml | brak unit pricing; wartosc wyliczona z nazwy produktu |
| 2720 | 70 g | 100 g | brak unit pricing; wartosc wyliczona z nazwy produktu |
## Pominiete
| Produkt | Powod |
| --- | --- |
| 3393 | brak jednoznacznego unit pricing w nazwie produktu |
| 3594 | brak jednoznacznego unit pricing w nazwie produktu |

View File

@@ -0,0 +1,291 @@
{
"created_at": "2026-05-15T23:13:26+02:00",
"client": "innsi.pl",
"task": "check_budget_usage",
"task_name": "Sprawdzenie wykorzystania budzetu",
"currency_code": "PLN",
"campaigns": [
{
"campaign_id": "23796378384",
"campaign_name": "[PLA_CL1] gen_factor",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15547616548",
"budget_name": "[PLA_CL1] gen_factor",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 30000000,
"expected_7d_micros": 210000000,
"cost_7d_micros": 268620000,
"avg_daily_cost_micros": 38374285,
"usage_percent": 127.9,
"pacing_label": "blisko limitu",
"conversions": 6.0,
"conversions_value": 1969.0,
"roas": 7.33,
"search_impression_share": 0.13164708225453098,
"search_budget_lost_impression_share": 0.8683529177454691,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "wysokie",
"action": "rozważ podniesienie budżetu",
"reason": "kampania prawie wykorzystuje budzet, traci duzo wyswietlen przez budzet i ma dodatnia rentownosc",
"suggested_budget_change_percent": 30,
"current_daily_budget_micros": 30000000,
"recommended_daily_budget_micros": 39000000,
"budget_delta_micros": 9000000,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23796424236",
"campaign_name": "[PLA_CL1] podopharm",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15547649923",
"budget_name": "[PLA_CL1] podopharm",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 30000000,
"expected_7d_micros": 210000000,
"cost_7d_micros": 262520000,
"avg_daily_cost_micros": 37502857,
"usage_percent": 125.0,
"pacing_label": "blisko limitu",
"conversions": 5.0,
"conversions_value": 420.0,
"roas": 1.6,
"search_impression_share": 0.4300975995779478,
"search_budget_lost_impression_share": 0.5699024004220522,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "srednie",
"action": "sprawdz mozliwosc podniesienia budżetu",
"reason": "kampania wykorzystuje budzet i traci czesc wyswietlen przez budzet",
"suggested_budget_change_percent": 30,
"current_daily_budget_micros": 30000000,
"recommended_daily_budget_micros": 39000000,
"budget_delta_micros": 9000000,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "21249422107",
"campaign_name": "[PMax] products (catch-all)",
"status": "ENABLED",
"channel_type": "PERFORMANCE_MAX",
"budget_id": "13551431002",
"budget_name": "[PMax] products (catch-all)",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 110000000,
"expected_7d_micros": 770000000,
"cost_7d_micros": 775322958,
"avg_daily_cost_micros": 110760422,
"usage_percent": 100.7,
"pacing_label": "blisko limitu",
"conversions": 14.0,
"conversions_value": 1818.89,
"roas": 2.35,
"search_impression_share": 0.4568911876798631,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.5431088123201369,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "ok",
"action": "bez zmiany budzetu",
"reason": "brak jednoczesnego sygnalu wysokiego wykorzystania i utraty przez budzet",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 110000000,
"recommended_daily_budget_micros": 110000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "9941029102",
"campaign_name": "[Search] brand",
"status": "ENABLED",
"channel_type": "SEARCH",
"budget_id": "6957234908",
"budget_name": "[Search] brand",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 10000000,
"expected_7d_micros": 70000000,
"cost_7d_micros": 7653700,
"avg_daily_cost_micros": 1093385,
"usage_percent": 10.9,
"pacing_label": "niskie wykorzystanie",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0.0,
"search_impression_share": 0.9459459459459459,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.05405405405405406,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "ok",
"action": "bez zmiany budzetu",
"reason": "brak jednoczesnego sygnalu wysokiego wykorzystania i utraty przez budzet",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 10000000,
"recommended_daily_budget_micros": 10000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15537855989",
"budget_name": "[PLA_CL1] aurumaris",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 30000000,
"expected_7d_micros": 210000000,
"cost_7d_micros": 0,
"avg_daily_cost_micros": 0,
"usage_percent": 0.0,
"pacing_label": "brak wydatkow",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0,
"search_impression_share": 0.0,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "do sprawdzenia",
"action": "sprawdz brak wydatkow",
"reason": "aktywna kampania nie wydala srodkow w ostatnich 7 dniach",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 30000000,
"recommended_daily_budget_micros": 30000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23847226734",
"campaign_name": "[PLA_CL1] mina_ibrow",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15586048495",
"budget_name": "[PLA_CL1] mina_ibrow",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 30000000,
"expected_7d_micros": 210000000,
"cost_7d_micros": 0,
"avg_daily_cost_micros": 0,
"usage_percent": 0.0,
"pacing_label": "brak wydatkow",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0,
"search_impression_share": 0.0,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "do sprawdzenia",
"action": "sprawdz brak wydatkow",
"reason": "aktywna kampania nie wydala srodkow w ostatnich 7 dniach",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 30000000,
"recommended_daily_budget_micros": 30000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
}
],
"scope": [
{
"area": "Wydatki 7 dni",
"check": "Porownaj koszt z ostatnich 7 dni z oczekiwanym wydatkiem wynikajacym z budzetu dziennego."
},
{
"area": "Pacing",
"check": "Oznacz kampanie, ktore wydaja bardzo malo albo prawie caly tygodniowy limit budzetu."
},
{
"area": "Utrata wyswietlania przez budzet",
"check": "Polacz wykorzystanie budzetu z utrata udzialu w wyswietleniach przez budzet i rentownoscia kampanii."
},
{
"area": "Brak wydatkow",
"check": "Wskaz aktywne kampanie z budzetem, ktore nie wydaly srodkow w ostatnich 7 dniach."
},
{
"area": "Budzet wspoldzielony",
"check": "Pokaz nazwe budzetu, zeby latwiej wychwycic kampanie korzystajace z tego samego budzetu."
}
],
"out_of_scope": [
"zmiany stawek i strategii ustalania stawek",
"ocena Docelowego ROAS albo Docelowego CPA",
"analiza zapytan, wykluczen i jakosci ruchu",
"wdrazanie zmian budzetowych na koncie"
],
"knowledge_rules": [
{
"id": "smart_bidding_sequential_budget_and_target_changes",
"topic": "strategie_stawek",
"rule_type": "warning",
"condition": "Plan zaklada zmiane budzetu albo celu Smart Bidding, szczegolnie gdy zmiana jest duza albo nastepuje krotko po innej zmianie budzetu, strategii lub celu.",
"recommendation": "Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana.",
"risk": "Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji.",
"source": "manual"
}
],
"warnings": [],
"budget_changes": [
{
"campaign_id": "23796378384",
"campaign_name": "[PLA_CL1] gen_factor",
"budget_id": "15547616548",
"budget_name": "[PLA_CL1] gen_factor",
"current_daily_budget_micros": 30000000,
"target_daily_budget_micros": 39000000,
"delta_micros": 9000000,
"reason": "kampania prawie wykorzystuje budzet, traci duzo wyswietlen przez budzet i ma dodatnia rentownosc"
},
{
"campaign_id": "23796424236",
"campaign_name": "[PLA_CL1] podopharm",
"budget_id": "15547649923",
"budget_name": "[PLA_CL1] podopharm",
"current_daily_budget_micros": 30000000,
"target_daily_budget_micros": 39000000,
"delta_micros": 9000000,
"reason": "kampania wykorzystuje budzet i traci czesc wyswietlen przez budzet"
}
],
"changes": [
{
"campaign_id": "23796378384",
"campaign_name": "[PLA_CL1] gen_factor",
"budget_id": "15547616548",
"budget_name": "[PLA_CL1] gen_factor",
"current_daily_budget_micros": 30000000,
"target_daily_budget_micros": 39000000,
"delta_micros": 9000000,
"reason": "kampania prawie wykorzystuje budzet, traci duzo wyswietlen przez budzet i ma dodatnia rentownosc"
},
{
"campaign_id": "23796424236",
"campaign_name": "[PLA_CL1] podopharm",
"budget_id": "15547649923",
"budget_name": "[PLA_CL1] podopharm",
"current_daily_budget_micros": 30000000,
"target_daily_budget_micros": 39000000,
"delta_micros": 9000000,
"reason": "kampania wykorzystuje budzet i traci czesc wyswietlen przez budzet"
}
]
}

View File

@@ -0,0 +1,54 @@
# Plan: Sprawdzenie wykorzystania budzetu
Klient: innsi.pl
Utworzono: 2026-05-15T23:13:26+02:00
## Podsumowanie
- Kampanie aktywne z danymi 7 dni: 6
- Reguly wiedzy przypisane do zadania: 1
- Rekomendacje budzetowe do decyzji: 4
- Zmiany budzetu do wdrozenia: 0
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Wydatki 7 dni | Porownaj koszt z ostatnich 7 dni z oczekiwanym wydatkiem wynikajacym z budzetu dziennego. |
| Pacing | Oznacz kampanie, ktore wydaja bardzo malo albo prawie caly tygodniowy limit budzetu. |
| Utrata wyswietlania przez budzet | Polacz wykorzystanie budzetu z utrata udzialu w wyswietleniach przez budzet i rentownoscia kampanii. |
| Brak wydatkow | Wskaz aktywne kampanie z budzetem, ktore nie wydaly srodkow w ostatnich 7 dniach. |
| Budzet wspoldzielony | Pokaz nazwe budzetu, zeby latwiej wychwycic kampanie korzystajace z tego samego budzetu. |
## Poza zakresem tego zadania
- zmiany stawek i strategii ustalania stawek
- ocena Docelowego ROAS albo Docelowego CPA
- analiza zapytan, wykluczen i jakosci ruchu
- wdrazanie zmian budzetowych na koncie
## Wykorzystanie budzetu z ostatnich 7 dni
| Kampania | Typ | Budzet dzienny | Koszt 7 dni | Uzycie 7 dni | Utrata przez budzet | ROAS | Status | Ost. zmiana budzetu | Budzet |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [PLA_CL1] gen_factor | SHOPPING | 30.00 PLN | 268.62 PLN | 127.9% | 86.84% | 7.33 | blisko limitu | brak danych | [PLA_CL1] gen_factor |
| [PLA_CL1] podopharm | SHOPPING | 30.00 PLN | 262.52 PLN | 125.0% | 56.99% | 1.60 | blisko limitu | brak danych | [PLA_CL1] podopharm |
| [PMax] products (catch-all) | PERFORMANCE_MAX | 110.00 PLN | 775.32 PLN | 100.7% | 0.00% | 2.35 | blisko limitu | brak danych | [PMax] products (catch-all) |
| [Search] brand | SEARCH | 10.00 PLN | 7.65 PLN | 10.9% | 0.00% | - | niskie wykorzystanie | brak danych | [Search] brand |
| [PLA_CL1] aurumaris | SHOPPING | 30.00 PLN | 0.00 PLN | 0.0% | 0.00% | - | brak wydatkow | brak danych | [PLA_CL1] aurumaris |
| [PLA_CL1] mina_ibrow | SHOPPING | 30.00 PLN | 0.00 PLN | 0.0% | 0.00% | - | brak wydatkow | brak danych | [PLA_CL1] mina_ibrow |
## Rekomendacje budzetowe do decyzji
| Kampania | Waznosc | Obecnie | Propozycja | Zmiana | Powod |
| --- | --- | --- | --- | --- | --- |
| [PLA_CL1] gen_factor | wysokie | 30.00 PLN | 39.00 PLN | +30% (9.00 PLN) | kampania prawie wykorzystuje budzet, traci duzo wyswietlen przez budzet i ma dodatnia rentownosc |
| [PLA_CL1] podopharm | srednie | 30.00 PLN | 39.00 PLN | +30% (9.00 PLN) | kampania wykorzystuje budzet i traci czesc wyswietlen przez budzet |
| [PLA_CL1] aurumaris | do sprawdzenia | 30.00 PLN | 30.00 PLN | +0% (0.00 PLN) | aktywna kampania nie wydala srodkow w ostatnich 7 dniach |
| [PLA_CL1] mina_ibrow | do sprawdzenia | 30.00 PLN | 30.00 PLN | +0% (0.00 PLN) | aktywna kampania nie wydala srodkow w ostatnich 7 dniach |
## Reguly z bazy wiedzy
| ID | Temat | Rekomendacja | Ryzyko |
| --- | --- | --- | --- |
| smart_bidding_sequential_budget_and_target_changes | strategie_stawek | Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana. | Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji. |

View File

@@ -0,0 +1,290 @@
{
"created_at": "2026-05-15T23:16:10+02:00",
"client": "innsi.pl",
"task": "check_bidding_strategies",
"task_name": "Sprawdzenie strategii stawek",
"currency_code": "PLN",
"campaigns": [
{
"campaign_id": "23796378384",
"campaign_name": "[PLA_CL1] gen_factor",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_ROAS",
"bidding_strategy_resource": "",
"budget_id": "15547616548",
"budget_name": "[PLA_CL1] gen_factor",
"daily_budget_micros": 39000000,
"cost_30d_micros": 451010000,
"conversions_30d": 9.0,
"conversion_value_30d": 2901.0,
"search_impression_share": 0.17227370826456773,
"search_budget_lost_impression_share": 0.7625999746096229,
"search_rank_lost_impression_share": 0.06512631712580932,
"budget_usage_percent": 38.5,
"actual_roas": 6.43,
"target_cpa_micros": 0,
"target_roas": 1.0,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "Docelowy ROAS 100%",
"risk_label": "malo konwersji dla automatyzacji",
"target_assessment": "za malo danych do oceny celu ROAS",
"stability_label": "niestabilne: malo konwersji",
"budget_context": "budzet zmieniony w ostatnich 7 dniach",
"strategy_fit": "ryzykowne: za malo konwersji dla strategii wartosci",
"bidding_recommendation": {
"level": "czekaj",
"action": "odczekaj przed zmiana strategii",
"reason": "budzet byl niedawno zmieniony; najpierw zbierz nowe dane po zmianie"
}
},
{
"campaign_id": "23796424236",
"campaign_name": "[PLA_CL1] podopharm",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_ROAS",
"bidding_strategy_resource": "",
"budget_id": "15547649923",
"budget_name": "[PLA_CL1] podopharm",
"daily_budget_micros": 39000000,
"cost_30d_micros": 444330000,
"conversions_30d": 8.0,
"conversion_value_30d": 709.0,
"search_impression_share": 0.45832987120897384,
"search_budget_lost_impression_share": 0.4927295388450353,
"search_rank_lost_impression_share": 0.04894058994599086,
"budget_usage_percent": 38.0,
"actual_roas": 1.6,
"target_cpa_micros": 0,
"target_roas": 1.0,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "Docelowy ROAS 100%",
"risk_label": "malo konwersji dla automatyzacji",
"target_assessment": "za malo danych do oceny celu ROAS",
"stability_label": "niestabilne: malo konwersji",
"budget_context": "budzet zmieniony w ostatnich 7 dniach",
"strategy_fit": "ryzykowne: za malo konwersji dla strategii wartosci",
"bidding_recommendation": {
"level": "czekaj",
"action": "odczekaj przed zmiana strategii",
"reason": "budzet byl niedawno zmieniony; najpierw zbierz nowe dane po zmianie"
}
},
{
"campaign_id": "23796468366",
"campaign_name": "[PLA_CL1] aurumaris",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_ROAS",
"bidding_strategy_resource": "",
"budget_id": "15537855989",
"budget_name": "[PLA_CL1] aurumaris",
"daily_budget_micros": 30000000,
"cost_30d_micros": 0,
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"search_impression_share": 0.0,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.0,
"budget_usage_percent": 0.0,
"actual_roas": 0.0,
"target_cpa_micros": 0,
"target_roas": 2.0,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "Docelowy ROAS 200%",
"risk_label": "brak konwersji w 30 dni",
"target_assessment": "brak jawnego celu do oceny",
"stability_label": "niestabilne: brak konwersji",
"budget_context": "brak silnego sygnalu budzetowego",
"strategy_fit": "ryzykowne: za malo konwersji dla strategii wartosci",
"bidding_recommendation": {
"level": "ostroznie",
"action": "nie zmieniaj strategii",
"reason": "niestabilne: brak konwersji"
}
},
{
"campaign_id": "23847226734",
"campaign_name": "[PLA_CL1] mina_ibrow",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_ROAS",
"bidding_strategy_resource": "",
"budget_id": "15586048495",
"budget_name": "[PLA_CL1] mina_ibrow",
"daily_budget_micros": 30000000,
"cost_30d_micros": 0,
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"search_impression_share": 0.0,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.0,
"budget_usage_percent": 0.0,
"actual_roas": 0.0,
"target_cpa_micros": 0,
"target_roas": 2.0,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "Docelowy ROAS 200%",
"risk_label": "brak konwersji w 30 dni",
"target_assessment": "brak jawnego celu do oceny",
"stability_label": "niestabilne: brak konwersji",
"budget_context": "brak silnego sygnalu budzetowego",
"strategy_fit": "ryzykowne: za malo konwersji dla strategii wartosci",
"bidding_recommendation": {
"level": "ostroznie",
"action": "nie zmieniaj strategii",
"reason": "niestabilne: brak konwersji"
}
},
{
"campaign_id": "9941029102",
"campaign_name": "[Search] brand",
"status": "ENABLED",
"channel_type": "SEARCH",
"bidding_strategy_type": "TARGET_IMPRESSION_SHARE",
"bidding_strategy_resource": "",
"budget_id": "6957234908",
"budget_name": "[Search] brand",
"daily_budget_micros": 10000000,
"cost_30d_micros": 29965339,
"conversions_30d": 5.0,
"conversion_value_30d": 2028.5,
"search_impression_share": 0.8723404255319149,
"search_budget_lost_impression_share": 0.07446808510638298,
"search_rank_lost_impression_share": 0.05319148936170213,
"budget_usage_percent": 10.0,
"actual_roas": 67.68,
"target_cpa_micros": 0,
"target_roas": 0.0,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "brak jawnego celu",
"risk_label": "dane do oceny",
"target_assessment": "brak jawnego celu do oceny",
"stability_label": "niestabilne: malo konwersji",
"budget_context": "niskie wykorzystanie budzetu",
"strategy_fit": "pasuje do kampanii brand/search, nie optymalizuje bezposrednio wartosci konwersji",
"bidding_recommendation": {
"level": "ostroznie",
"action": "nie zmieniaj strategii",
"reason": "niestabilne: malo konwersji"
}
},
{
"campaign_id": "21249422107",
"campaign_name": "[PMax] products (catch-all)",
"status": "ENABLED",
"channel_type": "PERFORMANCE_MAX",
"bidding_strategy_type": "MAXIMIZE_CONVERSIONS",
"bidding_strategy_resource": "",
"budget_id": "13551431002",
"budget_name": "[PMax] products (catch-all)",
"daily_budget_micros": 110000000,
"cost_30d_micros": 3542159032,
"conversions_30d": 74.207715,
"conversion_value_30d": 11235.863462248,
"search_impression_share": 0.4485326950899316,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.5514673049100685,
"budget_usage_percent": 107.3,
"actual_roas": 3.17,
"target_cpa_micros": 0,
"target_roas": 0.0,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "brak jawnego celu",
"risk_label": "dane do oceny",
"target_assessment": "brak jawnego celu do oceny",
"stability_label": "stabilne",
"budget_context": "budzet blisko limitu",
"strategy_fit": "pasuje do celu pozyskiwania konwersji",
"bidding_recommendation": {
"level": "ok",
"action": "bez zmiany strategii",
"reason": "brak mocnego sygnalu do zmiany celu albo strategii"
}
}
],
"scope": [
{
"area": "Typ strategii",
"check": "Pokaz typ strategii ustalania stawek dla aktywnych kampanii."
},
{
"area": "Cele strategii",
"check": "Pokaz aktualny Docelowy ROAS albo Docelowy CPA, jezeli kampania go uzywa."
},
{
"area": "Wolumen konwersji",
"check": "Sprawdz liczbe konwersji z ostatnich 30 dni jako kontekst dla automatycznych strategii."
},
{
"area": "Stabilnosc decyzji",
"check": "Oznacz kampanie, gdzie malo danych zwieksza ryzyko pochopnej zmiany strategii albo celu."
},
{
"area": "Ocena celu",
"check": "Porownaj rzeczywisty ROAS/CPA z aktualnym celem i oznacz cele zbyt niskie albo zbyt wysokie."
},
{
"area": "Kontekst budzetu",
"check": "Uwzglednij wykorzystanie budzetu i utrate wyswietlania przez budzet przed rekomendacja zmiany strategii."
},
{
"area": "Zmiany po budzecie",
"check": "Jesli budzet byl niedawno zmieniany, rekomenduj odczekanie przed zmiana strategii albo celu."
},
{
"area": "Dopasowanie strategii",
"check": "Sprawdz, czy strategia pasuje do typu kampanii i dostepnego wolumenu danych."
},
{
"area": "Rekomendacja",
"check": "Pokaz konkretna rekomendacje decyzyjna bez automatycznego wdrazania zmian strategii."
}
],
"out_of_scope": [
"budzety i pacing budzetu",
"podstawowe ustawienia kampanii, np. lokalizacje i sieci",
"zapytania uzytkownikow oraz wykluczenia",
"reklamy, zasoby i kreacje",
"automatyczne wdrazanie zmian strategii stawek"
],
"knowledge_rules": [
{
"id": "search_new_campaign_no_weak_conversion_automation",
"topic": "strategie_stawek",
"rule_type": "warning",
"condition": "Nowa kampania Search bez historii danych używa automatycznej strategii opartej o konwersje albo opiera się na słabych, zbyt ogólnych lub niewiarygodnych konwersjach.",
"recommendation": "Nie startuj kampanii Search od automatyzacji opartej o konwersje, jeśli konto nie ma jakościowych danych. Najpierw ustaw konkretne cele konwersji, sprawdź pomiar i zbuduj sensowną strukturę słów kluczowych.",
"risk": "Algorytm może uczyć się na zbyt małej albo błędnej liczbie sygnałów, przez co kampania będzie źle wydawać budżet i zbierze dane niskiej jakości.",
"source": "manual"
},
{
"id": "target_roas_too_high_can_limit_spend",
"topic": "strategie_stawek",
"rule_type": "warning",
"condition": "Kampania używa strategii opartej o Docelowy ROAS, ma wystarczająco danych do oceny, a rzeczywisty ROAS jest wyraźnie niższy od ustawionego celu.",
"recommendation": "W planie oznacz, że Docelowy ROAS może być zbyt restrykcyjny. Przed zmianą celu wskaż, czy problem wynika z jakości kampanii, oferty lub feedu, czy z samego celu ustawionego zbyt wysoko względem aktualnej efektywności.",
"risk": "Zbyt wysoki Docelowy ROAS może ograniczać wydatki, zmniejszać liczbę wyświetleń i blokować skalowanie kampanii, mimo że kampania mogłaby generować wartościowy ruch przy mniej restrykcyjnym celu.",
"source": "manual"
},
{
"id": "smart_bidding_sequential_budget_and_target_changes",
"topic": "strategie_stawek",
"rule_type": "warning",
"condition": "Plan zaklada zmiane budzetu albo celu Smart Bidding, szczegolnie gdy zmiana jest duza albo nastepuje krotko po innej zmianie budzetu, strategii lub celu.",
"recommendation": "Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana.",
"risk": "Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji.",
"source": "manual"
}
],
"warnings": [],
"target_changes": [],
"changes": []
}

View File

@@ -0,0 +1,62 @@
# Plan: Sprawdzenie strategii stawek
Klient: innsi.pl
Utworzono: 2026-05-15T23:16:10+02:00
## Podsumowanie
- Kampanie aktywne z danymi 30 dni: 6
- Reguly wiedzy przypisane do zadania: 3
- Rekomendacje strategii do decyzji: 5
- Zmiany celu do wdrozenia po akceptacji: 0
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Typ strategii | Pokaz typ strategii ustalania stawek dla aktywnych kampanii. |
| Cele strategii | Pokaz aktualny Docelowy ROAS albo Docelowy CPA, jezeli kampania go uzywa. |
| Wolumen konwersji | Sprawdz liczbe konwersji z ostatnich 30 dni jako kontekst dla automatycznych strategii. |
| Stabilnosc decyzji | Oznacz kampanie, gdzie malo danych zwieksza ryzyko pochopnej zmiany strategii albo celu. |
| Ocena celu | Porownaj rzeczywisty ROAS/CPA z aktualnym celem i oznacz cele zbyt niskie albo zbyt wysokie. |
| Kontekst budzetu | Uwzglednij wykorzystanie budzetu i utrate wyswietlania przez budzet przed rekomendacja zmiany strategii. |
| Zmiany po budzecie | Jesli budzet byl niedawno zmieniany, rekomenduj odczekanie przed zmiana strategii albo celu. |
| Dopasowanie strategii | Sprawdz, czy strategia pasuje do typu kampanii i dostepnego wolumenu danych. |
| Rekomendacja | Pokaz konkretna rekomendacje decyzyjna bez automatycznego wdrazania zmian strategii. |
## Poza zakresem tego zadania
- budzety i pacing budzetu
- podstawowe ustawienia kampanii, np. lokalizacje i sieci
- zapytania uzytkownikow oraz wykluczenia
- reklamy, zasoby i kreacje
- automatyczne wdrazanie zmian strategii stawek
## Strategie stawek z ostatnich 30 dni
| Kampania | Typ | Strategia | Cel | Koszt | Konwersje | Wartosc konwersji | ROAS | Utrata budzet | Ocena celu | Stabilnosc | Budzet |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [PLA_CL1] gen_factor | SHOPPING | TARGET_ROAS | Docelowy ROAS 100% | 451.01 PLN | 9.00 | 2901.00 | 6.43 | 76.26% | za malo danych do oceny celu ROAS | niestabilne: malo konwersji | budzet zmieniony w ostatnich 7 dniach |
| [PLA_CL1] podopharm | SHOPPING | TARGET_ROAS | Docelowy ROAS 100% | 444.33 PLN | 8.00 | 709.00 | 1.60 | 49.27% | za malo danych do oceny celu ROAS | niestabilne: malo konwersji | budzet zmieniony w ostatnich 7 dniach |
| [PLA_CL1] aurumaris | SHOPPING | TARGET_ROAS | Docelowy ROAS 200% | 0.00 PLN | 0.00 | 0.00 | 0.00 | 0.00% | brak jawnego celu do oceny | niestabilne: brak konwersji | brak silnego sygnalu budzetowego |
| [PLA_CL1] mina_ibrow | SHOPPING | TARGET_ROAS | Docelowy ROAS 200% | 0.00 PLN | 0.00 | 0.00 | 0.00 | 0.00% | brak jawnego celu do oceny | niestabilne: brak konwersji | brak silnego sygnalu budzetowego |
| [Search] brand | SEARCH | TARGET_IMPRESSION_SHARE | brak jawnego celu | 29.97 PLN | 5.00 | 2028.50 | 67.68 | 7.45% | brak jawnego celu do oceny | niestabilne: malo konwersji | niskie wykorzystanie budzetu |
| [PMax] products (catch-all) | PERFORMANCE_MAX | MAXIMIZE_CONVERSIONS | brak jawnego celu | 3542.16 PLN | 74.21 | 11235.86 | 3.17 | 0.00% | brak jawnego celu do oceny | stabilne | budzet blisko limitu |
## Rekomendacje strategii do decyzji
| Kampania | Waznosc | Rekomendacja | Powod | Dopasowanie strategii |
| --- | --- | --- | --- | --- |
| [PLA_CL1] gen_factor | czekaj | odczekaj przed zmiana strategii | budzet byl niedawno zmieniony; najpierw zbierz nowe dane po zmianie | ryzykowne: za malo konwersji dla strategii wartosci |
| [PLA_CL1] podopharm | czekaj | odczekaj przed zmiana strategii | budzet byl niedawno zmieniony; najpierw zbierz nowe dane po zmianie | ryzykowne: za malo konwersji dla strategii wartosci |
| [PLA_CL1] aurumaris | ostroznie | nie zmieniaj strategii | niestabilne: brak konwersji | ryzykowne: za malo konwersji dla strategii wartosci |
| [PLA_CL1] mina_ibrow | ostroznie | nie zmieniaj strategii | niestabilne: brak konwersji | ryzykowne: za malo konwersji dla strategii wartosci |
| [Search] brand | ostroznie | nie zmieniaj strategii | niestabilne: malo konwersji | pasuje do kampanii brand/search, nie optymalizuje bezposrednio wartosci konwersji |
## Reguly z bazy wiedzy
| ID | Temat | Rekomendacja | Ryzyko |
| --- | --- | --- | --- |
| search_new_campaign_no_weak_conversion_automation | strategie_stawek | Nie startuj kampanii Search od automatyzacji opartej o konwersje, jeśli konto nie ma jakościowych danych. Najpierw ustaw konkretne cele konwersji, sprawdź pomiar i zbuduj sensowną strukturę słów kluczowych. | Algorytm może uczyć się na zbyt małej albo błędnej liczbie sygnałów, przez co kampania będzie źle wydawać budżet i zbierze dane niskiej jakości. |
| target_roas_too_high_can_limit_spend | strategie_stawek | W planie oznacz, że Docelowy ROAS może być zbyt restrykcyjny. Przed zmianą celu wskaż, czy problem wynika z jakości kampanii, oferty lub feedu, czy z samego celu ustawionego zbyt wysoko względem aktualnej efektywności. | Zbyt wysoki Docelowy ROAS może ograniczać wydatki, zmniejszać liczbę wyświetleń i blokować skalowanie kampanii, mimo że kampania mogłaby generować wartościowy ruch przy mniej restrykcyjnym celu. |
| smart_bidding_sequential_budget_and_target_changes | strategie_stawek | Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana. | Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji. |

View File

@@ -0,0 +1,242 @@
{
"created_at": "2026-05-15T23:16:49+02:00",
"client": "innsi.pl",
"task": "check_account_anomalies",
"task_name": "Sprawdzenie anomalii konta",
"currency_code": "PLN",
"recent_period": {
"label": "ostatnie 7 zakonczonych dni",
"start": "2026-05-08",
"end": "2026-05-14"
},
"previous_period": {
"label": "poprzednie 7 dni",
"start": "2026-05-01",
"end": "2026-05-07"
},
"account_summary": [
{
"metric": "Koszt",
"previous": "1136.04 PLN",
"recent": "1314.12 PLN",
"change_percent": "+15.7%"
},
{
"metric": "Klikniecia",
"previous": "693",
"recent": "829",
"change_percent": "+19.6%"
},
{
"metric": "Wyswietlenia",
"previous": "68049",
"recent": "73306",
"change_percent": "+7.7%"
},
{
"metric": "Konwersje",
"previous": "27.00",
"recent": "25.00",
"change_percent": "-7.4%"
},
{
"metric": "Wartosc konwersji",
"previous": "4557.50 PLN",
"recent": "4207.89 PLN",
"change_percent": "-7.7%"
},
{
"metric": "CTR",
"previous": "1.0%",
"recent": "1.1%",
"change_percent": "+10.8%"
},
{
"metric": "Sredni CPC",
"previous": "1.64 PLN",
"recent": "1.59 PLN",
"change_percent": "-3.3%"
},
{
"metric": "ROAS",
"previous": "4.01",
"recent": "3.20",
"change_percent": "-20.2%"
}
],
"campaigns": [
{
"campaign_id": "21249422107",
"campaign_name": "[PMax] products (catch-all)",
"status": "ENABLED",
"channel_type": "PERFORMANCE_MAX",
"previous_cost": "769.01 PLN",
"recent_cost": "775.32 PLN",
"cost_change": "+0.8%",
"previous_clicks": "551",
"recent_clicks": "555",
"clicks_change": "+0.7%",
"previous_conversions": "19.00",
"recent_conversions": "14.00",
"conversions_change": "-26.3%",
"previous_roas": "3.64",
"recent_roas": "2.35",
"roas_change": "-35.4%"
},
{
"campaign_id": "23796378384",
"campaign_name": "[PLA_CL1] gen_factor",
"status": "ENABLED",
"channel_type": "SHOPPING",
"previous_cost": "179.99 PLN",
"recent_cost": "268.62 PLN",
"cost_change": "+49.2%",
"previous_clicks": "40",
"recent_clicks": "78",
"clicks_change": "+95.0%",
"previous_conversions": "3.00",
"recent_conversions": "6.00",
"conversions_change": "+100.0%",
"previous_roas": "5.18",
"recent_roas": "7.33",
"roas_change": "+41.5%"
},
{
"campaign_id": "23796424236",
"campaign_name": "[PLA_CL1] podopharm",
"status": "ENABLED",
"channel_type": "SHOPPING",
"previous_cost": "181.81 PLN",
"recent_cost": "262.52 PLN",
"cost_change": "+44.4%",
"previous_clicks": "90",
"recent_clicks": "177",
"clicks_change": "+96.7%",
"previous_conversions": "3.00",
"recent_conversions": "5.00",
"conversions_change": "+66.7%",
"previous_roas": "1.59",
"recent_roas": "1.60",
"roas_change": "+0.6%"
},
{
"campaign_id": "9941029102",
"campaign_name": "[Search] brand",
"status": "ENABLED",
"channel_type": "SEARCH",
"previous_cost": "5.23 PLN",
"recent_cost": "7.65 PLN",
"cost_change": "+46.3%",
"previous_clicks": "12",
"recent_clicks": "19",
"clicks_change": "+58.3%",
"previous_conversions": "2.00",
"recent_conversions": "0.00",
"conversions_change": "-100.0%",
"previous_roas": "102.20",
"recent_roas": "0.00",
"roas_change": "-100.0%"
}
],
"anomalies": [
{
"campaign_id": "9941029102",
"campaign_name": "[Search] brand",
"channel_type": "SEARCH",
"status": "ENABLED",
"metric": "wartosc konwersji",
"severity": "wysokie",
"previous_value": "534.50 PLN",
"recent_value": "0.00 PLN",
"change_percent": "-100.0%",
"reason": "wartosc konwersji spadla o co najmniej polowe",
"recommendation": "sprawdz pomiar, koszyk, kampanie produktowe i jakosc ruchu"
},
{
"campaign_id": "23796378384",
"campaign_name": "[PLA_CL1] gen_factor",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "klikniecia",
"severity": "niskie",
"previous_value": "40",
"recent_value": "78",
"change_percent": "+95.0%",
"reason": "klikniecia wzrosly bardzo mocno tydzien do tygodnia",
"recommendation": "sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu"
},
{
"campaign_id": "23796378384",
"campaign_name": "[PLA_CL1] gen_factor",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "konwersje",
"severity": "niskie",
"previous_value": "3.00",
"recent_value": "6.00",
"change_percent": "+100.0%",
"reason": "konwersje wzrosly bardzo mocno tydzien do tygodnia",
"recommendation": "sprawdz, czy wzrost jest rzeczywisty i czy nie zmienil sie pomiar"
},
{
"campaign_id": "23796378384",
"campaign_name": "[PLA_CL1] gen_factor",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "wartosc konwersji",
"severity": "niskie",
"previous_value": "932.00 PLN",
"recent_value": "1969.00 PLN",
"change_percent": "+111.3%",
"reason": "wartosc konwersji wzrosla ponad dwukrotnie",
"recommendation": "sprawdz, czy wzrost wynika z realnej sprzedazy, a nie zmiany pomiaru"
},
{
"campaign_id": "23796424236",
"campaign_name": "[PLA_CL1] podopharm",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "klikniecia",
"severity": "niskie",
"previous_value": "90",
"recent_value": "177",
"change_percent": "+96.7%",
"reason": "klikniecia wzrosly bardzo mocno tydzien do tygodnia",
"recommendation": "sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu"
}
],
"scope": [
{
"area": "Okres porownania",
"check": "Porownaj ostatnie 7 zakonczonych dni z poprzednimi 7 dniami, bez uzywania niepelnych danych z dzisiaj."
},
{
"area": "Metryki kampanii",
"check": "Sprawdz koszt, klikniecia, wyswietlenia, konwersje, wartosc konwersji, CTR, CPC i ROAS na poziomie aktywnych kampanii."
},
{
"area": "Nagly spadek",
"check": "Oznacz kampanie, w ktorych spadl ruch, koszt, konwersje, wartosc konwersji albo ROAS."
},
{
"area": "Nagly wzrost",
"check": "Oznacz kampanie, w ktorych koszt, CPC albo ruch wzrosly szybciej niz wyniki."
},
{
"area": "Priorytet reakcji",
"check": "Nadaj anomaliom poziom waznosci, aby agent mogl szybko zdecydowac, ktore kampanie sprawdzic jako pierwsze."
}
],
"out_of_scope": [
"zmiany budzetow i ocena pacingu budzetu",
"zmiany strategii stawek oraz celow Docelowy ROAS/Docelowy CPA",
"analiza zapytan uzytkownikow oraz wykluczen",
"analiza reklam RSA, zasobow i kreacji",
"wdrazanie zmian na koncie Google Ads"
],
"knowledge_rules": [],
"warnings": [
"Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Reguly dotyczace anomalii i alertow bedziemy dopisywac osobno po akceptacji uzytkownika."
],
"changes": []
}

View File

@@ -0,0 +1,70 @@
# Plan: Sprawdzenie anomalii konta
Klient: innsi.pl
Utworzono: 2026-05-15T23:16:49+02:00
## Okresy
- Ostatnie 7 zakonczonych dni: 2026-05-08 - 2026-05-14
- Poprzednie 7 dni: 2026-05-01 - 2026-05-07
## Podsumowanie
- Kampanie z danymi: 4
- Wykryte anomalie: 5
- Reguly wiedzy przypisane do zadania: 0
- Zmiany do wdrozenia: 0
## Uwagi
- Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Reguly dotyczace anomalii i alertow bedziemy dopisywac osobno po akceptacji uzytkownika.
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Okres porownania | Porownaj ostatnie 7 zakonczonych dni z poprzednimi 7 dniami, bez uzywania niepelnych danych z dzisiaj. |
| Metryki kampanii | Sprawdz koszt, klikniecia, wyswietlenia, konwersje, wartosc konwersji, CTR, CPC i ROAS na poziomie aktywnych kampanii. |
| Nagly spadek | Oznacz kampanie, w ktorych spadl ruch, koszt, konwersje, wartosc konwersji albo ROAS. |
| Nagly wzrost | Oznacz kampanie, w ktorych koszt, CPC albo ruch wzrosly szybciej niz wyniki. |
| Priorytet reakcji | Nadaj anomaliom poziom waznosci, aby agent mogl szybko zdecydowac, ktore kampanie sprawdzic jako pierwsze. |
## Poza zakresem tego zadania
- zmiany budzetow i ocena pacingu budzetu
- zmiany strategii stawek oraz celow Docelowy ROAS/Docelowy CPA
- analiza zapytan uzytkownikow oraz wykluczen
- analiza reklam RSA, zasobow i kreacji
- wdrazanie zmian na koncie Google Ads
## Podsumowanie konta
| Metryka | Poprzednie 7 dni | Ostatnie 7 dni | Zmiana |
| --- | --- | --- | --- |
| Koszt | 1136.04 PLN | 1314.12 PLN | +15.7% |
| Klikniecia | 693 | 829 | +19.6% |
| Wyswietlenia | 68049 | 73306 | +7.7% |
| Konwersje | 27.00 | 25.00 | -7.4% |
| Wartosc konwersji | 4557.50 PLN | 4207.89 PLN | -7.7% |
| CTR | 1.0% | 1.1% | +10.8% |
| Sredni CPC | 1.64 PLN | 1.59 PLN | -3.3% |
| ROAS | 4.01 | 3.20 | -20.2% |
## Wykryte anomalie
| Waznosc | Kampania | Metryka | Poprzednio | Teraz | Zmiana | Powod | Rekomendacja |
| --- | --- | --- | --- | --- | --- | --- | --- |
| wysokie | [Search] brand | wartosc konwersji | 534.50 PLN | 0.00 PLN | -100.0% | wartosc konwersji spadla o co najmniej polowe | sprawdz pomiar, koszyk, kampanie produktowe i jakosc ruchu |
| niskie | [PLA_CL1] gen_factor | klikniecia | 40 | 78 | +95.0% | klikniecia wzrosly bardzo mocno tydzien do tygodnia | sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu |
| niskie | [PLA_CL1] gen_factor | konwersje | 3.00 | 6.00 | +100.0% | konwersje wzrosly bardzo mocno tydzien do tygodnia | sprawdz, czy wzrost jest rzeczywisty i czy nie zmienil sie pomiar |
| niskie | [PLA_CL1] gen_factor | wartosc konwersji | 932.00 PLN | 1969.00 PLN | +111.3% | wartosc konwersji wzrosla ponad dwukrotnie | sprawdz, czy wzrost wynika z realnej sprzedazy, a nie zmiany pomiaru |
| niskie | [PLA_CL1] podopharm | klikniecia | 90 | 177 | +96.7% | klikniecia wzrosly bardzo mocno tydzien do tygodnia | sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu |
## Porownanie kampanii
| Kampania | Typ | Status | Koszt poprzednio | Koszt teraz | Zmiana kosztu | Konwersje poprzednio | Konwersje teraz | Zmiana konwersji | ROAS poprzednio | ROAS teraz | Zmiana ROAS |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [PMax] products (catch-all) | PERFORMANCE_MAX | ENABLED | 769.01 PLN | 775.32 PLN | +0.8% | 19.00 | 14.00 | -26.3% | 3.64 | 2.35 | -35.4% |
| [PLA_CL1] gen_factor | SHOPPING | ENABLED | 179.99 PLN | 268.62 PLN | +49.2% | 3.00 | 6.00 | +100.0% | 5.18 | 7.33 | +41.5% |
| [PLA_CL1] podopharm | SHOPPING | ENABLED | 181.81 PLN | 262.52 PLN | +44.4% | 3.00 | 5.00 | +66.7% | 1.59 | 1.60 | +0.6% |
| [Search] brand | SEARCH | ENABLED | 5.23 PLN | 7.65 PLN | +46.3% | 2.00 | 0.00 | -100.0% | 102.20 | 0.00 | -100.0% |

View File

@@ -0,0 +1,28 @@
{"product_id": "2720", "date": "2026-05-15", "field": "title", "old": "Maść z naturalnymi olejkami Regeneracja suchej skóry 70g Arkada", "new": "Arkada maść z naturalnymi olejkami do regeneracji suchej skóry 70 g"}
{"product_id": "1814", "date": "2026-05-15", "field": "title", "old": "Zestaw płynów HydraPure Oczyszczanie Wodorowe", "new": "HydraPure zestaw płynów do oczyszczania wodorowego"}
{"product_id": "2016", "date": "2026-05-15", "field": "title", "old": "Olejek do paznokci Mykobooster 10ml Podopharm", "new": "Podopharm Mykobooster olejek do paznokci 10 ml"}
{"product_id": "1413", "date": "2026-05-15", "field": "title", "old": "Henna żelowa Brown 15ml Refectocil", "new": "Refectocil henna żelowa Brown do brwi i rzęs 15 ml"}
{"product_id": "3133", "date": "2026-05-15", "field": "title", "old": "Nożyczki ES-03 NGHIA EXPORT Activ", "new": "NGHIA Export Activ ES-03 nożyczki kosmetyczne"}
{"product_id": "93", "date": "2026-05-15", "field": "title", "old": "Wonder Sculpt Paletka cieni Karaja nr 01", "new": "Karaja Wonder Sculpt paletka cieni do powiek nr 01"}
{"product_id": "2524", "date": "2026-05-15", "field": "title", "old": "Taśmy modelująco liftingujące beige Secret Lift IBRA Makeup", "new": "IBRA Makeup Secret Lift taśmy modelująco-liftingujące beige"}
{"product_id": "1554", "date": "2026-05-15", "field": "title", "old": "Henna Anna brązowa proszkowa Hornung 20 g", "new": "Hornung Anna henna proszkowa brązowa 20 g"}
{"product_id": "2026", "date": "2026-05-15", "field": "title", "old": "Krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125ml Podopharm", "new": "Podopharm krem do stóp w piance z mikrosrebrem i jaskółczym zielem 125 ml"}
{"product_id": "3560", "date": "2026-05-15", "field": "title", "old": "Pre-Depilatory Gel żel przed depilacją 200ml Starpil", "new": "Starpil Pre-Depilatory Gel żel przed depilacją 200 ml"}
{"product_id": "2720", "date": "2026-05-15", "field": "google_product_category", "old": "", "new": "Health & Beauty > Personal Care > Cosmetics > Skin Care > Lotion & Moisturizer"}
{"product_id": "1814", "date": "2026-05-15", "field": "google_product_category", "old": "", "new": "Health & Beauty > Personal Care > Cosmetics > Skin Care"}
{"product_id": "2016", "date": "2026-05-15", "field": "google_product_category", "old": "", "new": "Health & Beauty > Personal Care > Cosmetics > Nail Care"}
{"product_id": "1413", "date": "2026-05-15", "field": "google_product_category", "old": "", "new": "Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup"}
{"product_id": "3133", "date": "2026-05-15", "field": "google_product_category", "old": "", "new": "Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools"}
{"product_id": "93", "date": "2026-05-15", "field": "google_product_category", "old": "", "new": "Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup"}
{"product_id": "2524", "date": "2026-05-15", "field": "google_product_category", "old": "", "new": "Health & Beauty > Personal Care > Cosmetics > Cosmetic Tools"}
{"product_id": "1554", "date": "2026-05-15", "field": "google_product_category", "old": "", "new": "Health & Beauty > Personal Care > Cosmetics > Makeup > Eye Makeup"}
{"product_id": "2026", "date": "2026-05-15", "field": "google_product_category", "old": "", "new": "Health & Beauty > Personal Care > Cosmetics > Skin Care > Lotion & Moisturizer"}
{"product_id": "3560", "date": "2026-05-15", "field": "google_product_category", "old": "", "new": "Health & Beauty > Personal Care > Cosmetics > Skin Care"}
{"product_id": "3582", "date": "2026-05-15", "field": "unit_pricing", "old": "", "new": "30 ml / 100 ml"}
{"product_id": "3622", "date": "2026-05-15", "field": "unit_pricing", "old": "", "new": "8 ml / 100 ml"}
{"product_id": "2721", "date": "2026-05-15", "field": "unit_pricing", "old": "", "new": "11 ml / 100 ml"}
{"product_id": "2018", "date": "2026-05-15", "field": "unit_pricing", "old": "", "new": "20 ml / 100 ml"}
{"product_id": "3378", "date": "2026-05-15", "field": "unit_pricing", "old": "", "new": "14 ml / 100 ml"}
{"product_id": "3623", "date": "2026-05-15", "field": "unit_pricing", "old": "", "new": "15 ml / 100 ml"}
{"product_id": "1883", "date": "2026-05-15", "field": "unit_pricing", "old": "", "new": "500 ml / 100 ml"}
{"product_id": "2720", "date": "2026-05-15", "field": "unit_pricing", "old": "", "new": "70 g / 100 g"}

View File

@@ -168,3 +168,154 @@
| investagd.pl | 1210 | custom_label_4 | catch_all | |
| investagd.pl | 1211 | custom_label_4 | catch_all | |
## 20:45 - Synchronizacja kampanii PLA_CL1
| klient | kampania | czynnosc | grupa reklam | produkt |
| --- | --- | --- | --- | --- |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny) | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | Odkurzacz workowy Profi P6 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Wąż ssący do odkurzaczy Zelmer 321.0110 (czarny) | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr piankowy I typ 919.0087 do odkurzaczy Zelmer Aquos 829, Aquawelt 919 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr S Hepa IG-03 do odkurzacza Invest GALACTICO | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr do odkurzacza Rowenta Silence Force , Silence Force Compact, Silence Force, Extreme, Silence Force Extreme Compact, ZR002901 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Ssawka 3w1 do odkurzaczy Zelmer - 32 mm typ 354 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr do odkurzaczy Kärcher WD4, WD5, WD 4.200 - WD 4.500, 6.414-960.0 OKRĄGŁY - FK-454 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] worki | wstrzymano grupe reklam | Worki PHILIPS Athena Duathlon, HR6814-6855; IZ-PH6.1F | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] pozostale | wstrzymano grupe reklam | Wkłady filtrujące do dzbanka Aquaphor Maxfor+ 3szt | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] pozostale | wstrzymano grupe reklam | Wkład do butelki filtrującej Aquaphor City | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Ssawka okrągła z naturalnym włosiem 35 mm do odkurzaczy Bosch | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] worki | wstrzymano grupe reklam | Worki do odkurzacza Amica Universis Beris Sumam Nortes papierowe 5 szt. | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] pozostale | wstrzymano grupe reklam | Szatkownica do maszynki do mięsa Zelmer 586 686 886 986 - przystawka z 4 tarkami (plastry, wiórki, ziemniaki) SA01 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | PHILIPS SpeedPro Max FC5005 FC6802 FILTR | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | Odkurzacz workowy Profi 1.2 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | Odkurzacz workowy Profi 1.2 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | ODKURZACZ WORKOWY VM 1058 SURAZO | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | ODKURZACZ WORKOWY INVEST GALACTICO 850 W | produkt jest w zlej kampanii |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | Odkurzacz workowy Profi P6 + 5x worki - zestaw | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | ODKURZACZ WORKOWY AMICA VM 1033 ORA | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | Odkurzacz workowy Profi P6 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | Odkurzacz workowy Profi 1.2.1 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | Odkurzacz przemysłowy Invest Profus III - budowlany warsztatowy do pracy na sucho i mokro 1200W 10L | produkt jest w zlej kampanii |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | ODKURZACZ WORKOWY ZELMER TADEK ZVC261 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | Odkurzacz workowy Profi 11.5 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr powietrza wstępny 719.0060 do odkurzacza ZELMER 719 Wodnik Duo, Wodnik Duo Plus 819 Aquario | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr HEPA 719.0150 do odkurzacza ZELMER 719 Wodnik Duo, 819 Aquario, Wodnik Duo Plus, 829 Aquos | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr EPA 12 do odkurzacza ELECTROLUX Airmax, Clario, Ergo Space, Ultra Silencer, IZ-FHE1 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr do odkurzacza Miele S4000 S5000 S6000 S8000; GA4007 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Ssawka mała z welurem SM 0535 do odkurzacza Bosch,Siemens, Moulinex , Karcher | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Zestaw ssawek IZ-ZDE do dywanów i wykładzin do odkurzacza Electrolux, Philips, Amica | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | Odkurzacz workowy Profi 1.2.1 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] worki | wstrzymano grupe reklam | Worki papierowe do odkurzaczy SAMSUNG Easy RC 999, VP-95B; IZ-FA6 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] worki | wstrzymano grupe reklam | SZCZOTKA KOŃCÓWKA DO PAROWNICY KARCHER SC SC1 SC2 SC3 SC4 SC5 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] pozostale | wstrzymano grupe reklam | Wąż dopływowy 3,0 do pralki / zmywarki - 3 m | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] worki | wstrzymano grupe reklam | 5X Worki do odkurzacza Zelmer 700, 701, Compact, IZ-700.0020 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | ODKURZACZ WORKOWY VM 1058 SURAZO | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] pozostale | wstrzymano grupe reklam | Wąż dopływowy 1,0 do pralki / zmywarki - 1 m | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] pozostale | wstrzymano grupe reklam | Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] worki | wstrzymano grupe reklam | 5X WORKI KARCHER A2000 A2004 A2054 WD2 WD2.200 WD2.250 ZAMIENNIK | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Ssawka do odkurzacza Zelmer duża podłogowa 32mm 23cm typ 49.1900 zamiennik (EAN 5905857142659) | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Mała ssawka z welurem SM35 do odkurzacza Bosch, Karcher, Profi, Miele, Moulinex, Samsung | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Zestaw filtrów GA3833 do odkurzacza PHILIPS FC 8058/01, PowerPro Active FC 8630 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr 5000.0050ZKU HEPA 13 z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Clarris Twix, Magnat, Jupiter | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Zestaw ssawek IZ-ZDK do dywanów i wykładzin do odkurzacza Karcher, Bosch, Siemens, Profi, Rowenta | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | ODKURZACZ WORKOWY ZELMER TADEK ZVC261 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | Odkurzacz workowy Profi 11.5 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki | produkt jest w zlej kampanii |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki | produkt jest w zlej kampanii |
| investagd.pl | [PLA_CL1] worki | wstrzymano grupe reklam | Worki PANASONIC AMC 8 F01 T 1000, C 20E, MC-E 761; IZ-PC5 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] worki | wstrzymano grupe reklam | Worki papierowe do NILFISK 818460.00, GD 1000, GD 1000 SER, GD 1005, GD 1010, GDS 1010, HDS 1010, VP 100; IZ-NI3 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] pozostale | wstrzymano grupe reklam | Butelka filtrująca Aquaphor City 500 ml granatowa + wkład | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Płyn czyszczący do odkurzaczy piorących PL.D | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Zestaw akcesoriów do odkurzacza iRobot Roomba TS-75 | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr EPA 12 2000.0050KU z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Magnat, Jupiter, Solaris | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Filtr wlotowy 601201.4070 do odkurzacza Zelmer Voyager Twix | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Ssawka do odkurzacza Zelmer z welurem 32mm - mała ssawka do mebli i tapicerki | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Zestaw ssawek IZ-SPZ do paneli do odkurzaczy Zelmer | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Zestaw ssawek IZ-ZDZ do dywanów do odkurzaczy Zelmer | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Ssawka mała 49.0003 do odkurzacza ZELMER | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Turboszczotka uniwersalna z regulowaną średnicą 30-38mm | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] worki | wstrzymano grupe reklam | Worek płócienny Electrolux S-bag; IZ-E5/PH5WP | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Szczotka ssawka do paneli z naturalnym włosiem do odkurzacza Bosch, Karcher, Siemens, Rowenta, Profi - IZ-SPU | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | Odkurzacz workowy Profi P6 + 5x worki - zestaw | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Zestaw ssawek naturalnym włosiem do paneli do odkurzacza Electrolux, Amica, Samsung, Philips typ IZ-SPE | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] odkurzacze | wstrzymano grupe reklam | ODKURZACZ WORKOWY AMICA VM 1033 ORA | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] pozostale | wstrzymano grupe reklam | Dzbanek filtrujący Aquaphor Jasper 2,8L + wkład maxfor+ | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] pozostale | zmieniono nazwe grupy reklam | Zelmer zestaw trzepaków do miksera 181 281 371 381 | Trzepaki do miksera Zelmer 371K - komplet do robotów 181, 281, 371, 381 |
| investagd.pl | [PLA_CL1] worki | zmieniono nazwe grupy reklam | Worki do odkurzacza Electrolux Mondo E44 E49 | Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe + filtry |
| investagd.pl | [PLA_CL1] worki | zmieniono nazwe grupy reklam | 5X Worki papierowe do odkurzacza Zelmer 2000, Aquawelt, Aquos, Cobra, Meteor 2, Voyager | Worki do odkurzacza Zelmer Meteor 2 Cobra Aquawelt Voyager - papierowe 5 szt |
| investagd.pl | [PLA_CL1] worki | zmieniono nazwe grupy reklam | 5 SZT WORKI DO LIDL PARKSIDE PNTS 1300 1400 | Worki do odkurzacza Parkside PNTS 1300 1400 syntetyczne 5 szt. - zamiennik Lidl Einhell |
| investagd.pl | [PLA_CL1] worki | zmieniono nazwe grupy reklam | Worki do odkurzaczy Amica Nimis VM 1021, 1022, Qubis Base VJ 1031, 1032, Universis Base VK 1012, Universis VK 1011, Ventis VK 4021 IZ-AM2/AM3S | Worki do odkurzacza Amica Nimis Qubis Universis Ventis IZ-AM2 |
| investagd.pl | [PLA_CL1] worki | zmieniono nazwe grupy reklam | Worki ELECTROLUX E 44, E 49, Mondo, Mondo E 49, Mondo II, Mondo Z 1100 - 1199 | Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe |
## 21:34 - Optymalizacja tytulow produktow
| klient | produkt | pole | obecnie | docelowo |
| --- | --- | --- | --- | --- |
| investagd.pl | 1041 | title | Odkurzacz workowy Profi 1.2.1 | Odkurzacz workowy Profi 1.2.1 do domu i biura |
| investagd.pl | 569 | title | Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny) | Wąż ssący Zelmer 2000.1300 czarny do odkurzacza |
| investagd.pl | 1068 | title | ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T | Odkurzacz workowy Zelmer Antek ZVC3501T |
| investagd.pl | 1045 | title | Odkurzacz workowy Profi 11.5 | Odkurzacz workowy Profi 11.5 do domu i biura |
| investagd.pl | 666 | title | Wąż dopływowy 3,0 do pralki / zmywarki - 3 m | Wąż dopływowy 3 m do pralki i zmywarki |
| investagd.pl | 835 | title | Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481 | Nasadka miksująca Zelmer 171.2000Z do robotów 371 281 381 481 |
| investagd.pl | 178 | title | Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S | Worki do odkurzacza Electrolux Philips IZ-E5 PH5S |
| investagd.pl | 729 | title | Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt | Worki papierowe Zelmer Adaś Franek Olek Kuba ZVC 333 334 335 5 szt. |
| investagd.pl | 323 | title | Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP | Worki syntetyczne Bosch Activa Alpha Siemens Super L IZ-S11SP |
| investagd.pl | 1083 | title | 4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio | Worki syntetyczne Zelmer Józek Kazik Kazio 4 szt. |
## 21:36 - Optymalizacja kategorii Google
| klient | produkt | pole | obecnie | docelowo |
| --- | --- | --- | --- | --- |
| investagd.pl | 1041 | google_product_category | | Dom i ogród > Sprzęt AGD > Odkurzacze |
| investagd.pl | 569 | google_product_category | | Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy |
| investagd.pl | 1068 | google_product_category | | Dom i ogród > Sprzęt AGD > Odkurzacze |
| investagd.pl | 1045 | google_product_category | | Dom i ogród > Sprzęt AGD > Odkurzacze |
| investagd.pl | 666 | google_product_category | | Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do pralek i suszarek |
| investagd.pl | 835 | google_product_category | | Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do mikserów i blenderów |
| investagd.pl | 178 | google_product_category | | Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy |
| investagd.pl | 729 | google_product_category | | Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy |
| investagd.pl | 323 | google_product_category | | Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy |
| investagd.pl | 1083 | google_product_category | | Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy |
## 21:40 - Uzupelnienie unit pricing
| klient | produkt | pole | obecnie | docelowo |
| --- | --- | --- | --- | --- |
| investagd.pl | 871 | unit_pricing | | 5 szt / 1 szt |
| investagd.pl | 1090 | unit_pricing | | 6 szt / 1 szt |
## 21:44 - Sprawdzenie dostepnosci produktow
| klient | produkt | pole | obecnie | docelowo |
| --- | --- | --- | --- | --- |
| investagd.pl | 1097 | custom_label_4 | | paused |
## 21:48 - Synchronizacja kampanii PLA_CL1
| klient | kampania | czynnosc | grupa reklam | produkt |
| --- | --- | --- | --- | --- |
| investagd.pl | [PLA_CL1] odkurzacze | włączono grupę reklam | ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki | 1214 |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | wstrzymano grupe reklam | ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki | produkt jest w zlej kampanii |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | wstrzymano grupe reklam | Uniwersalny zestaw końcówek do odkurzaczy 4szt + Worek na akcesoria | produkt ma CL4=paused w adsPRO |
| investagd.pl | [PLA_CL1] worki | zmieniono nazwe grupy reklam | 4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio | Worki syntetyczne Zelmer Józek Kazik Kazio 4 szt. |
| investagd.pl | [PLA_CL1] worki | zmieniono nazwe grupy reklam | Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt | Worki papierowe Zelmer Adaś Franek Olek Kuba ZVC 333 334 335 5 szt. |
| investagd.pl | [PLA_CL1] worki | zmieniono nazwe grupy reklam | Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S | Worki do odkurzacza Electrolux Philips IZ-E5 PH5S |
| investagd.pl | [PLA_CL1] worki | zmieniono nazwe grupy reklam | Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP | Worki syntetyczne Bosch Activa Alpha Siemens Super L IZ-S11SP |
## 22:00 - Synchronizacja kampanii PLA_CL1
| klient | kampania | czynnosc | grupa reklam | produkt |
| --- | --- | --- | --- | --- |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | utworzono grupe reklam | Ssawko-szczotka z naturalnym włosiem do odkurzaczy ELECTROLUX AEG PHILIPS DN32; 050-003 | 623 | 623 |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | utworzono grupe reklam | ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki | 1213 | 1213 |
| investagd.pl | [PLA_CL1] odkurzacze_akcesoria | zmieniono nazwe grupy reklam | Ssawko-szczotka z naturalnym włosiem do odkurzaczy ELECTROLUX AEG PHILIPS DN32; 050-003 | Ssawko-szczotka z naturalnym włosiem do odkurzaczy ELECTROLUX AEG PHILIPS DN32; 050-003 | 1093 |
| investagd.pl | [PLA_CL1] odkurzacze | catch_all | zmieniono nazwe grupy reklam | ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki | ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki | 1212 |

View File

@@ -1,69 +1,69 @@
id,offer_id,title,availability,channel,content_language,target_country,feed_label,brand,google_product_category,custom_label_0,custom_label_1,custom_label_2,custom_label_3,custom_label_4,link
,1041,Odkurzacz workowy Profi 1.2.1,,,,,,,,,odkurzacze,,,,
,1042,Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza,,,,,,,,,odkurzacze,,,,
,1043,Odkurzacz workowy Profi 1.2,,,,,,,,,odkurzacze,,,,
,1044,Odkurzacz workowy Profi P6,,,,,,,,,odkurzacze,,,,
,1045,Odkurzacz workowy Profi 11.5,,,,,,,,,odkurzacze,,,,
,1046,Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr,,,,,,,,,odkurzacze,,,,
,1047,Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza,,,,,,,,,odkurzacze,,,,
,1048,Odkurzacz workowy Profi P6 + 5x worki - zestaw,,,,,,,Dom i ogród > Sprzęt AGD > Sprzęt do sprzątania > Odkurzacze i urządzenia do zamiatania podłóg > Odkurzacze,,odkurzacze,,,,
,1066,ODKURZACZ WORKOWY AMICA VM 1033 ORA,,,,,,,,,odkurzacze,,,,
,1067,ODKURZACZ WORKOWY VM 1058 SURAZO,,,,,,,,,odkurzacze,,,,
,1068,ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T,,,,,,,,,odkurzacze,,,,
,1069,ODKURZACZ WORKOWY ZELMER TADEK ZVC261,,,,,,,,,odkurzacze,,,,
,1041,Odkurzacz workowy Profi 1.2.1 do domu i biura,,,,,,,Dom i ogród > Sprzęt AGD > Odkurzacze,,odkurzacze,,,paused,
,1042,Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza,,,,,,,,,odkurzacze,,,paused,
,1043,Odkurzacz workowy Profi 1.2,,,,,,,,,odkurzacze,,,paused,
,1044,Odkurzacz workowy Profi P6,,,,,,,,,odkurzacze,,,paused,
,1045,Odkurzacz workowy Profi 11.5 do domu i biura,,,,,,,Dom i ogród > Sprzęt AGD > Odkurzacze,,odkurzacze,,,paused,
,1046,Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr,,,,,,,,,odkurzacze,,,paused,
,1047,Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza,,,,,,,,,odkurzacze,,,paused,
,1048,Odkurzacz workowy Profi P6 + 5x worki - zestaw,,,,,,,Dom i ogród > Sprzęt AGD > Sprzęt do sprzątania > Odkurzacze i urządzenia do zamiatania podłóg > Odkurzacze,,odkurzacze,,,paused,
,1066,ODKURZACZ WORKOWY AMICA VM 1033 ORA,,,,,,,,,odkurzacze,,,paused,
,1067,ODKURZACZ WORKOWY VM 1058 SURAZO,,,,,,,,,odkurzacze,,,paused,
,1068,Odkurzacz workowy Zelmer Antek ZVC3501T,,,,,,,Dom i ogród > Sprzęt AGD > Odkurzacze,,odkurzacze,,,paused,
,1069,ODKURZACZ WORKOWY ZELMER TADEK ZVC261,,,,,,,,,odkurzacze,,,paused,
,1210,Odkurzacz przemysłowy Invest Profus III - budowlany warsztatowy do pracy na sucho i mokro 1200W 10L,,,,,,,Dom i ogród > Sprzęt AGD > Sprzęt do sprzątania > Odkurzacze i urządzenia do zamiatania podłóg > Odkurzacze,,odkurzacze,,,,
,1211,ODKURZACZ WORKOWY INVEST GALACTICO 850 W,,,,,,,,,odkurzacze,,,,
,1212,ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki,,,,,,,,,odkurzacze,,,,
,1213,ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki,,,,,,,,,odkurzacze,,,,
,1212,ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki,,,,,,,,,odkurzacze,,,catch_all,
,1213,ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki,,,,,,,,,odkurzacze,,,catch_all,
,1214,ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki,,,,,,,,,odkurzacze,,,,
,1005,PHILIPS SpeedPro Max FC5005 FC6802 FILTR,,,,,,,,,odkurzacze_akcesoria,,,,
,1005,PHILIPS SpeedPro Max FC5005 FC6802 FILTR,,,,,,,,,odkurzacze_akcesoria,,,paused,
,1070,"Filtr HEPA oraz filtr stożkowy do odkurzaczy Dyson modeli DC58, DC59, DC61, DC62, V6 i V7",,,,,,,,,odkurzacze_akcesoria,,,,
,1093,Ssawko-szczotka z naturalnym włosiem do odkurzaczy ELECTROLUX AEG PHILIPS DN32; 050-003,,,,,,,,,odkurzacze_akcesoria,,,,
,1096,1X Filtr do odkurzacza Dyson V11 SV14 V15,,,,,,,,,odkurzacze_akcesoria,,,,
,1097,Uniwersalny zestaw końcówek do odkurzaczy 4szt + Worek na akcesoria,,,,,,,,,odkurzacze_akcesoria,,,,
,1097,Uniwersalny zestaw końcówek do odkurzaczy 4szt + Worek na akcesoria,,,,,,,,,odkurzacze_akcesoria,,,paused,
,1098,Ssawko-szczotka z naturalnym włosiem ELECTROLUX AEG PHILIPS KARCHER ZELMER,,,,,,,,,odkurzacze_akcesoria,,,,
,1100,Rura teleskopowa z tworzywa średnica wewnętrzna 35 mm,,,,,,,,,odkurzacze_akcesoria,,,,
,1101,SSAWKA SZCZELINOWA DO ODKURZACZY KARCHER BOSCH SAMSUNG ROWENTA,,,,,,,,,odkurzacze_akcesoria,,,,
,239,"Filtr HEPA 719.0150 do odkurzacza ZELMER 719 Wodnik Duo, 819 Aquario, Wodnik Duo Plus, 829 Aquos",,,,,,,,,odkurzacze_akcesoria,,,,
,242,"Filtr powietrza wstępny 719.0060 do odkurzacza ZELMER 719 Wodnik Duo, Wodnik Duo Plus 819 Aquario",,,,,,,,,odkurzacze_akcesoria,,,,
,239,"Filtr HEPA 719.0150 do odkurzacza ZELMER 719 Wodnik Duo, 819 Aquario, Wodnik Duo Plus, 829 Aquos",,,,,,,,,odkurzacze_akcesoria,,,paused,
,242,"Filtr powietrza wstępny 719.0060 do odkurzacza ZELMER 719 Wodnik Duo, Wodnik Duo Plus 819 Aquario",,,,,,,,,odkurzacze_akcesoria,,,paused,
,245,Rura teleskopowa do odkurzacza Zelmer Electrolux 111.6000,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,odkurzacze_akcesoria,,,,
,247,Ssawkoszczotka na kółkach do odkurzacza ZELMER; 449.0000P,,,,,,,,,odkurzacze_akcesoria,,,,
,250,Ssawka duża 49 P z dwoma zgarniaczami typ 170 do odkurzacza ZELMER,,,,,,,,,odkurzacze_akcesoria,,,,
,252,Ssawka średnia gładka 084 do odkurzacza ZELMER,,,,,,,,,odkurzacze_akcesoria,,,,
,253,Ssawka 800 z dwoma zgarniaczami typ 218 do odkurzacza ZELMER,,,,,,,,,odkurzacze_akcesoria,,,,
,254,Ssawka mała 49.0003 do odkurzacza ZELMER,,,,,,,,,odkurzacze_akcesoria,,,,
,254,Ssawka mała 49.0003 do odkurzacza ZELMER,,,,,,,,,odkurzacze_akcesoria,,,paused,
,257,Ssawka z włosem typ 800 do odkurzacza ZELMER,,,,,,,,,odkurzacze_akcesoria,,,,
,258,Ssawka z włosem typ 1020 do odkurzacza ZELMER,,,,,,,,,odkurzacze_akcesoria,,,,
,259,Szczotka okrągła z włosem typ 046 do odkurzacza ZELMER,,,,,,,,,odkurzacze_akcesoria,,,,
,260,Ssawka szczelinowa długa typ 056 do odkurzacza ZELMER,,,,,,,,,odkurzacze_akcesoria,,,,
,290,"Filtr HEPA 13 IZ-FHE2 do odkurzacza ELECTROLUX Airmax, Clario, Ergo Space, Ultra Silencer",,,,,,,,,odkurzacze_akcesoria,,,,
,299,"Ssawka mała z welurem SM 0535 do odkurzacza Bosch,Siemens, Moulinex , Karcher",,,,,,,,,odkurzacze_akcesoria,,,,
,299,"Ssawka mała z welurem SM 0535 do odkurzacza Bosch,Siemens, Moulinex , Karcher",,,,,,,,,odkurzacze_akcesoria,,,paused,
,309,"Ssawka mała ze zgarniaczem do odkurzacza Electrolux, Philips SM 0232",,,,,,,,,odkurzacze_akcesoria,,,,
,312,"Ssawka szczelinowa do odkurzacza Electrolux, Philips",,,,,,,,,odkurzacze_akcesoria,,,,
,313,"Ssawka duża do odkurzacza Electrolux, Philips; SE 0732",,,,,,,,,odkurzacze_akcesoria,,,,
,400,Uniwersalne filtry do odkurzaczy wlot i wylot; IZ-WWU,,,,,,,,,odkurzacze_akcesoria,,,,
,402,Uniwersalny zestaw końcówek do odkurzaczy 4szt,,,,,,,,,odkurzacze_akcesoria,,,,
,410,"Filtr S Hepa IF-33 do odkurzacza Invest FURIO, FURIO ECO",,,,,,,,,odkurzacze_akcesoria,,,,
,411,Filtr S Hepa IG-03 do odkurzacza Invest GALACTICO,,,,,,,,,odkurzacze_akcesoria,,,,
,411,Filtr S Hepa IG-03 do odkurzacza Invest GALACTICO,,,,,,,,,odkurzacze_akcesoria,,,paused,
,419,"Filtr 5000.0050K HEPA 13 do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Clarris Twix, Magnat, Jupiter, Solaris, Sola",,,,,,,,,odkurzacze_akcesoria,,,,
,421,Płyn czyszczący do odkurzaczy piorących PL.D,,,,,,,,,odkurzacze_akcesoria,,,,
,421,Płyn czyszczący do odkurzaczy piorących PL.D,,,,,,,,,odkurzacze_akcesoria,,,paused,
,422,Ssawka szczelinowa giętka do odkurzacza Zelmer,,,,,,,,,odkurzacze_akcesoria,,,,
,542,Ssawkoszczotka przełączalna do odkurzaczy Zelmer 32mm,,,,,,,,,odkurzacze_akcesoria,,,,
,551,"Filtr EPA 12 do odkurzacza ELECTROLUX Airmax, Clario, Ergo Space, Ultra Silencer, IZ-FHE1",,,,,,,,,odkurzacze_akcesoria,,,,
,551,"Filtr EPA 12 do odkurzacza ELECTROLUX Airmax, Clario, Ergo Space, Ultra Silencer, IZ-FHE1",,,,,,,,,odkurzacze_akcesoria,,,paused,
,568,Wąż ssący do odkurzaczy Zelmer 1010.1100 (czarny),,,,,,,,,odkurzacze_akcesoria,,,,
,569,Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny),,,,,,,,,odkurzacze_akcesoria,,,,
,569,Wąż ssący Zelmer 2000.1300 czarny do odkurzacza,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,odkurzacze_akcesoria,,,paused,
,57,"Worki do odkurzaczy DUO 01D011, 01D012; IZ-D011",,,,,,,,,odkurzacze_akcesoria,,,,
,570,Wąż ssący do odkurzaczy Zelmer 321.0110 (czarny),,,,,,,,,odkurzacze_akcesoria,,,,
,570,Wąż ssący do odkurzaczy Zelmer 321.0110 (czarny),,,,,,,,,odkurzacze_akcesoria,,,paused,
,571,Komplet filtrów wlot i wylot do odkurzacza Electrolux Mondo; IZ-WWE3,,,,,,,,,odkurzacze_akcesoria,,,,
,572,Szczotka parkietowa na kółkach do odkurzaczy ZELMER (czarna) 49.9500P,,,,,,,,,odkurzacze_akcesoria,,,,
,573,Turboszczotka uniwersalna z regulowaną średnicą 30-38mm,,,,,,,,,odkurzacze_akcesoria,,,,
,573,Turboszczotka uniwersalna z regulowaną średnicą 30-38mm,,,,,,,,,odkurzacze_akcesoria,,,paused,
,577,Ssawka ze zgarniaczem typ 168 do odkurzacza ZELMER,,,,,,,,,odkurzacze_akcesoria,,,,
,578,Ssawka mała z włosiem do odkurzacza Zelmer,,,,,,,Akcesoria do odkurzaczy,,odkurzacze_akcesoria,,,,
,579,"Ssawka mała z naturalnym włosiem do odkurzacza Electrolux, Philips typ 352",,,,,,,,,odkurzacze_akcesoria,,,,
,580,"Ssawka mała 353 z naturalnym włosiem do odkurzacza Bosch, Siemens, Moulinex",,,,,,,,,odkurzacze_akcesoria,,,,
,585,Ssawka do odkurzacza Zelmer duża podłogowa 32mm 23cm typ 49.1900 zamiennik (EAN 5905857142659),,,,,,,Dom i ogród > Sprzęt AGD > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Końcówki i szczotki do odkurzaczy,,odkurzacze_akcesoria,,,,
,585,Ssawka do odkurzacza Zelmer duża podłogowa 32mm 23cm typ 49.1900 zamiennik (EAN 5905857142659),,,,,,,Dom i ogród > Sprzęt AGD > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Końcówki i szczotki do odkurzaczy,,odkurzacze_akcesoria,,,paused,
,586,Ssawka duża do odkurzacza Bosch Siemens Moulinex SE 0735,,,,,,,Dom i ogród > Sprzęt AGD > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Końcówki i szczotki do odkurzaczy,,odkurzacze_akcesoria,,,,
,592,"Filtr piankowy I typ 919.0087 do odkurzaczy Zelmer Aquos 829, Aquawelt 919",,,,,,,,,odkurzacze_akcesoria,,,,
,592,"Filtr piankowy I typ 919.0087 do odkurzaczy Zelmer Aquos 829, Aquawelt 919",,,,,,,,,odkurzacze_akcesoria,,,paused,
,620,Filtr piankowy typ SC43 do odkurzacza Samsung SC43 VC43 VCC43,,,,,,,,,odkurzacze_akcesoria,,,,
,623,Ssawko-szczotka z naturalnym włosiem do odkurzaczy ELECTROLUX AEG PHILIPS DN32; 050-003,,,,,,,,,odkurzacze_akcesoria,,,,
,676,Rura teleskopowa z tworzywa do odkurzaczy ZELMER; RTP 0132,,,,,,,,,odkurzacze_akcesoria,,,,
@@ -71,49 +71,49 @@
,685,"Ssawko-szczotka SE1635 do odkurzaczy Bosch, Samsung, LG...",,,,,,,,,odkurzacze_akcesoria,,,,
,687,Ssawko-szczotka SE1432 do odkurzaczy Electrolux...,,,,,,,,,odkurzacze_akcesoria,,,,
,688,"Ssawko-szczotka SE1435 do odkurzaczy Bosch, Panasonic, Siemens...",,,,,,,,,odkurzacze_akcesoria,,,,
,748,Zestaw akcesoriów do odkurzacza iRobot Roomba TS-75,,,,,,,,,odkurzacze_akcesoria,,,,
,749,"Filtr do odkurzacza Rowenta Silence Force , Silence Force Compact, Silence Force, Extreme, Silence Force Extreme Compact, ZR002901",,,,,,,,,odkurzacze_akcesoria,,,,
,748,Zestaw akcesoriów do odkurzacza iRobot Roomba TS-75,,,,,,,,,odkurzacze_akcesoria,,,paused,
,749,"Filtr do odkurzacza Rowenta Silence Force , Silence Force Compact, Silence Force, Extreme, Silence Force Extreme Compact, ZR002901",,,,,,,,,odkurzacze_akcesoria,,,paused,
,750,"Filtr do odkurzacza Karcher NT 35/1 Eco/Te/M, NT 45/1 Eco/Te/M, NT 55/1 Eco/Te/M; FK-01",,,,,,,,,odkurzacze_akcesoria,,,,
,751,"Filtr FK-03 do odkurzacza Karcher 2501, 2701, 2801, SE 2001, SE5.100, 2501 TE, A2701, 2801 plus, SE 3001, 2601, 2701 TE, A2801, 3001, SE6.100, 2601 pl",,,,,,,,,odkurzacze_akcesoria,,,,
,752,"Filtr do odkurzacza Karcher NT 65/2 Eco Tc, NT 65/2 Eco, NT 72/2 Eco Tc; FK-04",,,,,,,,,odkurzacze_akcesoria,,,,
,753,"Filtr FK-10 do odkurzacza EINHELL: AFF 18, BT-VC 500 PARKSIDE: PAS 500A1, B1, C1, C2; PARK18/8C PARKSIDE 4711310437",,,,,,,,,odkurzacze_akcesoria,,,,
,756,"Filtry do odkurzacza FESTOOL CT, CTL, CTM 11, 22, 33, 44/45 Ventos 25/35, Karcher NT351, NT351/ECO, NT14/1; FK-17-2X",,,,,,,,,odkurzacze_akcesoria,,,,
,757,Filtr do odkurzacza Profi 3; FK-21,,,,,,,,,odkurzacze_akcesoria,,,,
,765,Filtr do odkurzacza Miele S4000 S5000 S6000 S8000; GA4007,,,,,,,,,odkurzacze_akcesoria,,,,
,766,"Zestaw filtrów GA3833 do odkurzacza PHILIPS FC 8058/01, PowerPro Active FC 8630",,,,,,,,,odkurzacze_akcesoria,,,,
,765,Filtr do odkurzacza Miele S4000 S5000 S6000 S8000; GA4007,,,,,,,,,odkurzacze_akcesoria,,,paused,
,766,"Zestaw filtrów GA3833 do odkurzacza PHILIPS FC 8058/01, PowerPro Active FC 8630",,,,,,,,,odkurzacze_akcesoria,,,paused,
,767,"Ssawka okrągła z naturalnym włosiem 32 mm do odkurzaczy Zelmer , 047",,,,,,,,,odkurzacze_akcesoria,,,,
,768,Ssawka okrągła z naturalnym włosiem 35 mm do odkurzaczy Bosch,,,,,,,,,odkurzacze_akcesoria,,,,
,768,Ssawka okrągła z naturalnym włosiem 35 mm do odkurzaczy Bosch,,,,,,,,,odkurzacze_akcesoria,,,paused,
,769,"Ssawka okrągła z naturalnym włosiem 32 mm do odkurzaczy Electrolux, 049",,,,,,,,,odkurzacze_akcesoria,,,,
,771,Ssawka 3w1 do odkurzaczy Zelmer - 32 mm typ 354,,,,,,,,,odkurzacze_akcesoria,,,,
,772,"Szczotka ssawka do paneli z naturalnym włosiem do odkurzacza Bosch, Karcher, Siemens, Rowenta, Profi - IZ-SPU",,,,,,,Dom i ogród > Sprzęty domowe > Akcesoria do sprzętów domowych > Akcesoria do odkurzaczy,,odkurzacze_akcesoria,,,,
,773,"Zestaw ssawek naturalnym włosiem do paneli do odkurzacza Electrolux, Amica, Samsung, Philips typ IZ-SPE",,,,,,,,,odkurzacze_akcesoria,,,,
,776,"Filtr do odkurzaczy Kärcher WD4, WD5, WD 4.200 - WD 4.500, 6.414-960.0 OKRĄGŁY - FK-454",,,,,,,,,odkurzacze_akcesoria,,,,
,777,"Filtr 5000.0050ZKU HEPA 13 z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Clarris Twix, Magnat, Jupiter",,,,,,,,,odkurzacze_akcesoria,,,,
,771,Ssawka 3w1 do odkurzaczy Zelmer - 32 mm typ 354,,,,,,,,,odkurzacze_akcesoria,,,paused,
,772,"Szczotka ssawka do paneli z naturalnym włosiem do odkurzacza Bosch, Karcher, Siemens, Rowenta, Profi - IZ-SPU",,,,,,,Dom i ogród > Sprzęty domowe > Akcesoria do sprzętów domowych > Akcesoria do odkurzaczy,,odkurzacze_akcesoria,,,paused,
,773,"Zestaw ssawek naturalnym włosiem do paneli do odkurzacza Electrolux, Amica, Samsung, Philips typ IZ-SPE",,,,,,,,,odkurzacze_akcesoria,,,paused,
,776,"Filtr do odkurzaczy Kärcher WD4, WD5, WD 4.200 - WD 4.500, 6.414-960.0 OKRĄGŁY - FK-454",,,,,,,,,odkurzacze_akcesoria,,,paused,
,777,"Filtr 5000.0050ZKU HEPA 13 z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Clarris Twix, Magnat, Jupiter",,,,,,,,,odkurzacze_akcesoria,,,paused,
,781,Wkład zapachowy do odkurzaczy (granulat) o zapachu morskim AROMA,,,,,,,,,odkurzacze_akcesoria,,,,
,791,"Filtr EPA 12 2000.0050KU z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Magnat, Jupiter, Solaris",,,,,,,,,odkurzacze_akcesoria,,,,
,791,"Filtr EPA 12 2000.0050KU z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Magnat, Jupiter, Solaris",,,,,,,,,odkurzacze_akcesoria,,,paused,
,793,"Filtr zmywalny do odkurzacza Karcher WD 2, WD 3, NT/27, SE 4001, SE 4002, MV 2, MV3, K 2000; FK-02/P",,,,,,,,,odkurzacze_akcesoria,,,,
,794,Filtr wlotowy 601201.4070 do odkurzacza Zelmer Voyager Twix,,,,,,,,,odkurzacze_akcesoria,,,,
,794,Filtr wlotowy 601201.4070 do odkurzacza Zelmer Voyager Twix,,,,,,,,,odkurzacze_akcesoria,,,paused,
,802,"Filtr piankowy SC47 do odkurzacza Samsung SC47J0, SC4320, SC4325,VCC4320S3B/XEO, VCC4325S3K/XEO, VCC4325S3R/XEO",,,,,,,,,odkurzacze_akcesoria,,,,
,808,Ssawka do odkurzacza Zelmer z welurem 32mm - mała ssawka do mebli i tapicerki,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,odkurzacze_akcesoria,,,,
,808,Ssawka do odkurzacza Zelmer z welurem 32mm - mała ssawka do mebli i tapicerki,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,odkurzacze_akcesoria,,,paused,
,809,"Ssawka welurowa do odkurzacza Electrolux, Philips - mała końcówka szczelinowa SM 0332 do tapicerki, mebli, zasłon",,,,,,,Dom i ogród > Sprzątanie > Akcesoria do sprzątania > Akcesoria do odkurzaczy > Szczotki i ssawki do odkurzaczy,,odkurzacze_akcesoria,,,,
,811,Duża ssawka 415 z naturalnym włosiem do odkurzacza Zelmer,,,,,,,,,odkurzacze_akcesoria,,,,
,814,"Ssawka 418 z syntetycznym włosiem do odkurzacza Bosch, Karcher, Moulinex, Siemens",,,,,,,,,odkurzacze_akcesoria,,,,
,815,"Ssawka 419 z naturalnym włosiem do odkurzacza Bosch, Karcher, Moulinex, Siemens",,,,,,,,,odkurzacze_akcesoria,,,,
,816,Zestaw ssawek IZ-SPZ do paneli do odkurzaczy Zelmer,,,,,,,,,odkurzacze_akcesoria,,,,
,817,Zestaw ssawek IZ-ZDZ do dywanów do odkurzaczy Zelmer,,,,,,,,,odkurzacze_akcesoria,,,,
,818,"Zestaw ssawek IZ-ZDE do dywanów i wykładzin do odkurzacza Electrolux, Philips, Amica",,,,,,,,,odkurzacze_akcesoria,,,,
,819,"Zestaw ssawek IZ-ZDK do dywanów i wykładzin do odkurzacza Karcher, Bosch, Siemens, Profi, Rowenta",,,,,,,,,odkurzacze_akcesoria,,,,
,816,Zestaw ssawek IZ-SPZ do paneli do odkurzaczy Zelmer,,,,,,,,,odkurzacze_akcesoria,,,paused,
,817,Zestaw ssawek IZ-ZDZ do dywanów do odkurzaczy Zelmer,,,,,,,,,odkurzacze_akcesoria,,,paused,
,818,"Zestaw ssawek IZ-ZDE do dywanów i wykładzin do odkurzacza Electrolux, Philips, Amica",,,,,,,,,odkurzacze_akcesoria,,,paused,
,819,"Zestaw ssawek IZ-ZDK do dywanów i wykładzin do odkurzacza Karcher, Bosch, Siemens, Profi, Rowenta",,,,,,,,,odkurzacze_akcesoria,,,paused,
,843,"Mała ssawka z welurem do tapicerki śr. wew. 32 mm do odkurzacza Hoover, De Longhi, Privileg, Philips, Electrolux, Rowenta, SE 0932",,,,,,,,,odkurzacze_akcesoria,,,,
,844,"Mała ssawka z welurem do tapicerki śr. wew. 35 mm do odkurzacza Bosch, Karcher, Moulinex, Siemens, Amica, Samsung, Profi, SE 0935",,,,,,,,,odkurzacze_akcesoria,,,,
,850,"Ssawka dwurzędowa 510 ze zgarniaczem śr. wew. 32mm do odkurzacza Electrolux, Philips",,,,,,,,,odkurzacze_akcesoria,,,,
,863,"Mała ssawka z welurem SM35 do odkurzacza Bosch, Karcher, Profi, Miele, Moulinex, Samsung",,,,,,,,,odkurzacze_akcesoria,,,,
,863,"Mała ssawka z welurem SM35 do odkurzacza Bosch, Karcher, Profi, Miele, Moulinex, Samsung",,,,,,,,,odkurzacze_akcesoria,,,paused,
,897,Filtr do odkurzacza Philips FC6409 FC6408 FC6170,,,,,,,,,odkurzacze_akcesoria,,,,
,1013,UNIWERSALNY WKŁAD DO POCHŁANIACZA WILGOCI 250G,,,,,,,,,pozostale,,,,
,1036,Wkłady do pochłaniacza wilgoci 250g uniwersalne - zestaw 10 szt. tabletki absorbujące,,,,,,,6827,,pozostale,,,,
,1049,Butelka filtrująca Aquaphor City 500 ml granatowa + wkład,,,,,,,,,pozostale,,,,
,1052,"Dzbanek filtrujący Aquaphor Jasper 2,8L + wkład maxfor+",,,,,,,,,pozostale,,,,
,1054,Wkłady filtrujące do dzbanka Aquaphor Maxfor+ 3szt,,,,,,,Wymienne wkłady do filtrów wody,,pozostale,,,,
,1055,Wkład do butelki filtrującej Aquaphor City,,,,,,,Wymienne wkłady do filtrów wody,,pozostale,,,,
,1049,Butelka filtrująca Aquaphor City 500 ml granatowa + wkład,,,,,,,,,pozostale,,,paused,
,1052,"Dzbanek filtrujący Aquaphor Jasper 2,8L + wkład maxfor+",,,,,,,,,pozostale,,,paused,
,1054,Wkłady filtrujące do dzbanka Aquaphor Maxfor+ 3szt,,,,,,,Wymienne wkłady do filtrów wody,,pozostale,,,paused,
,1055,Wkład do butelki filtrującej Aquaphor City,,,,,,,Wymienne wkłady do filtrów wody,,pozostale,,,paused,
,1057,Filtr węglowy do okapów kuchennych IZ-FW2,,,,,,,,,pozostale,,,,
,1103,Filtr do dzbanka Dafi Classic / Kenwood Anna - 6 szt. wkładów filtrujących wodę,,,,,,,Dom i ogród > Kuchnia i jadalnia > Przybory kuchenne > Filtry do wody > Wymienne wkłady do filtrów wody,,pozostale,,,,
,285,Sitko o średnicy otworów 8 mm do maszynki ZELMER z komorą 5 sitko 86.1242,,,,,,,,,pozostale,,,,
@@ -123,19 +123,19 @@
,387,"Trzepaki do miksera Zelmer 371K - komplet do robotów 181, 281, 371, 381",,,,,,,Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do mikserów i blenderów,,pozostale,,,,
,390,"Trzepaki mieszadełka do miksera Zelmer 481K - komplet do robotów 381, 481, 281, 181",,,,,,,Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do mikserów i blenderów,,pozostale,,,,
,397,Sprzęgło ślimaka Zelmer 86.1203 do maszynki do mięsa - zamiennik do wszystkich modeli,,,,,,,Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do rozdrabniaczy do żywności,,pozostale,,,,
,45,"Szatkownica do maszynki do mięsa Zelmer 586 686 886 986 - przystawka z 4 tarkami (plastry, wiórki, ziemniaki) SA01",,,,,,,Dom i ogród > Sprzęt AGD > Akcesoria do sprzętu AGD > Akcesoria do sprzętu AGD do przygotowywania żywności,,pozostale,,,,
,662,"Wąż dopływowy 1,0 do pralki / zmywarki - 1 m",,,,,,,,,pozostale,,,,
,666,"Wąż dopływowy 3,0 do pralki / zmywarki - 3 m",,,,,,,,,pozostale,,,,
,835,"Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481",,,,,,,,,pozostale,,,,
,45,"Szatkownica do maszynki do mięsa Zelmer 586 686 886 986 - przystawka z 4 tarkami (plastry, wiórki, ziemniaki) SA01",,,,,,,Dom i ogród > Sprzęt AGD > Akcesoria do sprzętu AGD > Akcesoria do sprzętu AGD do przygotowywania żywności,,pozostale,,,paused,
,662,"Wąż dopływowy 1,0 do pralki / zmywarki - 1 m",,,,,,,,,pozostale,,,paused,
,666,Wąż dopływowy 3 m do pralki i zmywarki,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do pralek i suszarek,,pozostale,,,paused,
,835,Nasadka miksująca Zelmer 171.2000Z do robotów 371 281 381 481,,,,,,,Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do mikserów i blenderów,,pozostale,,,paused,
,840,Filtr ochrony silnika Parkside Niteo PNTS 1300 1500,,,,,,,Worki do odkurzaczy,,pozostale,,,,
,1,Worki do odkurzacza Zelmer Meteor Admiral 1010 1020 1030 papierowe 5 szt. + filtry,,,,,,,4537,,worki,,,,
,10,Worki do odkurzacza Zelmer Elf 321 322 Elf Bonus Flip papierowe 5 szt.,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,1015,Worki do odkurzacza Zelmer Edek - papierowe 5 szt,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,1023,SZCZOTKA KOŃCÓWKA DO PAROWNICY KARCHER SC SC1 SC2 SC3 SC4 SC5,,,,,,,,,worki,,,,
,1023,SZCZOTKA KOŃCÓWKA DO PAROWNICY KARCHER SC SC1 SC2 SC3 SC4 SC5,,,,,,,,,worki,,,paused,
,1037,Worki do odkurzacza Thomas Aqua+ Pet & Family X7 X8 X10 XT syntetyczne 5 szt.,,,,,,,4537,,worki,,,,
,1056,Worki do KARCHER WD2 PLUS WD3 SE4001 SE4002 IZ-K22SP PO,,,,,,,,,worki,,,,
,1081,5X WORKI KARCHER A2000 A2004 A2054 WD2 WD2.200 WD2.250 ZAMIENNIK,,,,,,,,,worki,,,,
,1083,"4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio",,,,,,,,,worki,,,,
,1081,5X WORKI KARCHER A2000 A2004 A2054 WD2 WD2.200 WD2.250 ZAMIENNIK,,,,,,,,,worki,,,paused,
,1083,Worki syntetyczne Zelmer Józek Kazik Kazio 4 szt.,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy,,worki,,,,
,1087,"Worki syntetyczne do odkurzacza AMICA Surazo VM 1055, Ora VM 1032, SAMSUNG SC5480 SC5660, BEKO VCC 5325 AR, IZ-BAG05SPCZ 4szt",,,,,,,,,worki,,,,
,1088,"5X Worki syntetyczne do odkurzaczy ZELMER Magnat 3000, Jupiter 4000, Maxim, Solaris Twix",,,,,,,,,worki,,,,
,1089,Worki do odkurzacza Zelmer Elf 2 321 322 Elf Bonus Flip - 6 sztuk papierowe,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
@@ -148,37 +148,37 @@
,15,Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,16,Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe + filtry,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,17,Worki do odkurzacza Electrolux S-BAG Airmax Expression Philips Mobilo papierowe,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,170,"Worki PANASONIC AMC 8 F01 T 1000, C 20E, MC-E 761; IZ-PC5",,,,,,,,,worki,,,,
,178,Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S,,,,,,,,,worki,,,,
,170,"Worki PANASONIC AMC 8 F01 T 1000, C 20E, MC-E 761; IZ-PC5",,,,,,,,,worki,,,paused,
,178,Worki do odkurzacza Electrolux Philips IZ-E5 PH5S,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy,,worki,,,,
,2,Worki do odkurzacza Zelmer Meteor Admiral 1010 1020 1030 papierowe 5 szt.,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,20,Worki do odkurzacza Electrolux Cyclone Power Filio - papierowe 5 szt IZ-E13,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,21,Worki do odkurzacza Amica Universis Beris Sumam Nortes papierowe 5 szt.,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,paused,
,223,"Worki papierowe do MIELE Aquamarin, Automatic, Senator LX; IZ-M1/M4",,,,,,,,,worki,,,,
,24,"5X Worki do odkurzacza Zelmer XS 01Z011 + filtry, IZ-XS2F",,,,,,,,,worki,,,,
,27,"worki do odkurzacza uniwersalne z uchwytem do wycinania + filtr, Typ 1010, pasują do wielu modeli odkurzaczy workowych (5 szt.) IZ-BAG01F",,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy,,worki,,,,
,323,"Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP",,,,,,,,,worki,,,,
,323,Worki syntetyczne Bosch Activa Alpha Siemens Super L IZ-S11SP,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy,,worki,,,,
,34,"Worki ELDOM OS 1200, HOLDEN Maximo OD 30, INVEST Galactico, Furio, MPM Focus, PHILIPS FC 8046, 8334, 8344, 8348; IZ-Y19",,,,,,,,,worki,,,,
,35,Worki do odkurzacza Profi Europe Masterprofi Twist Profi 1 Profi 3 - 5 szt,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,408,Worek płócienny Electrolux S-bag; IZ-E5/PH5WP,,,,,,,,,worki,,,,
,408,Worek płócienny Electrolux S-bag; IZ-E5/PH5WP,,,,,,,,,worki,,,paused,
,5,Worki do odkurzacza Zelmer Meteor 2 Cobra 2000 2010 - 5 szt papierowe + filtry,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,507,"Worki papierowe do NILFISK 818460.00, GD 1000, GD 1000 SER, GD 1005, GD 1010, GDS 1010, HDS 1010, VP 100; IZ-NI3",,,,,,,,,worki,,,,
,507,"Worki papierowe do NILFISK 818460.00, GD 1000, GD 1000 SER, GD 1005, GD 1010, GDS 1010, HDS 1010, VP 100; IZ-NI3",,,,,,,,,worki,,,paused,
,54,"Worki papierowe do Rowenta BP 61 Enduro, Bully, RB 50 - RB 52, RB 500; IZ-R4",,,,,,,,,worki,,,,
,56,"Worki papierowe do odkurzaczy SAMSUNG Easy RC 999, VP-95B; IZ-FA6",,,,,,,,,worki,,,,
,56,"Worki papierowe do odkurzaczy SAMSUNG Easy RC 999, VP-95B; IZ-FA6",,,,,,,,,worki,,,paused,
,6,Worki papierowe do odkurzacza Zelmer 3000 5500 Magnat Solaris Jupiter 5szt,,,,,,,Worki do odkurzaczy,,worki,,,,
,609,"Worki syntetyczne do ROWENTA Silence Force, X-Treme Power; IZ-R16S",,,,,,,,,worki,,,,
,640,Worki do odkurzacza Karcher T 7/1 T 9/1 T 10/1 - papierowe 5 szt,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,644,Worki syntetyczne do ZELMER Multipro 01Z013,,,,,,,,,worki,,,,
,696,"Worki do odkurzacza Parkside PNTS 1250 1300 1400 1500 - 5 szt + filtr (kompat. Niteo Tools IPX 4, Blaupunkt WD4000) IZ-IPX4",,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy,,worki,,,,
,70,"5X Worki do odkurzacza Zelmer 700, 701, Compact, IZ-700.0020",,,,,,,,,worki,,,,
,70,"5X Worki do odkurzacza Zelmer 700, 701, Compact, IZ-700.0020",,,,,,,,,worki,,,paused,
,703,Worki do odkurzacza Amica Nimis Qubis Universis Ventis IZ-AM2,,,,,,,Worki do odkurzaczy,,worki,,,,
,705,Worki do odkurzacza Blaupunkt VCB201 Bomann BS9010 BS9011,,,,,,,Worki do odkurzaczy,,worki,,,,
,706,Worki do odkurzacza Samsung VP99; IZ-VP99,,,,,,,,,worki,,,,
,723,Worki papierowe do odkurzacza Zelmer Józek Kazio Kazik + filtr,,,,,,,Worki do odkurzaczy,,worki,,,,
,725,"Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio + filtr",,,,,,,,,worki,,,,
,729,"Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt",,,,,,,,,worki,,,,
,729,Worki papierowe Zelmer Adaś Franek Olek Kuba ZVC 333 334 335 5 szt.,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy,,worki,,,,
,789,Worki do odkurzacza Wetrok Monovac 6 Plus - 5 szt IZ-WK2,,,,,,,Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy,,worki,,,,
,8,"5X Worki papierowe do odkurzacza Zelmer Orion, Cobra II Silent 2500, Orion 1500, 1600, Twist, Twister",,,,,,,,,worki,,,,
,825,"Worki PHILIPS Athena Duathlon, HR6814-6855; IZ-PH6.1F",,,,,,,,,worki,,,,
,825,"Worki PHILIPS Athena Duathlon, HR6814-6855; IZ-PH6.1F",,,,,,,,,worki,,,paused,
,845,"Worki syntetyczne IZ-BAG05SPCZ do odkurzacza AMICA Surazo VM 1055, Ora VM 1032, SAMSUNG SC5480 SC5660, BEKO VCC 5325 AR, IZ-BAG05SPCZ 5szt",,,,,,,,,worki,,,,
,871,Worki do odkurzacza Parkside PNTS 1300 1400 syntetyczne 5 szt. - zamiennik Lidl Einhell,,,,,,,4537,,worki,,,,
,880,Worki do odkurzacza Amica Ora VM1032-VM1035 12szt,,,,,,,Worki do odkurzaczy,,worki,,,,
1 id offer_id title availability channel content_language target_country feed_label brand google_product_category custom_label_0 custom_label_1 custom_label_2 custom_label_3 custom_label_4 link
2 1041 Odkurzacz workowy Profi 1.2.1 Odkurzacz workowy Profi 1.2.1 do domu i biura Dom i ogród > Sprzęt AGD > Odkurzacze odkurzacze paused
3 1042 Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza odkurzacze paused
4 1043 Odkurzacz workowy Profi 1.2 odkurzacze paused
5 1044 Odkurzacz workowy Profi P6 odkurzacze paused
6 1045 Odkurzacz workowy Profi 11.5 Odkurzacz workowy Profi 11.5 do domu i biura Dom i ogród > Sprzęt AGD > Odkurzacze odkurzacze paused
7 1046 Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr odkurzacze paused
8 1047 Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza odkurzacze paused
9 1048 Odkurzacz workowy Profi P6 + 5x worki - zestaw Dom i ogród > Sprzęt AGD > Sprzęt do sprzątania > Odkurzacze i urządzenia do zamiatania podłóg > Odkurzacze odkurzacze paused
10 1066 ODKURZACZ WORKOWY AMICA VM 1033 ORA odkurzacze paused
11 1067 ODKURZACZ WORKOWY VM 1058 SURAZO odkurzacze paused
12 1068 ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T Odkurzacz workowy Zelmer Antek ZVC3501T Dom i ogród > Sprzęt AGD > Odkurzacze odkurzacze paused
13 1069 ODKURZACZ WORKOWY ZELMER TADEK ZVC261 odkurzacze paused
14 1210 Odkurzacz przemysłowy Invest Profus III - budowlany warsztatowy do pracy na sucho i mokro 1200W 10L Dom i ogród > Sprzęt AGD > Sprzęt do sprzątania > Odkurzacze i urządzenia do zamiatania podłóg > Odkurzacze odkurzacze
15 1211 ODKURZACZ WORKOWY INVEST GALACTICO 850 W odkurzacze
16 1212 ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki odkurzacze catch_all
17 1213 ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki odkurzacze catch_all
18 1214 ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki odkurzacze
19 1005 PHILIPS SpeedPro Max FC5005 FC6802 FILTR odkurzacze_akcesoria paused
20 1070 Filtr HEPA oraz filtr stożkowy do odkurzaczy Dyson modeli DC58, DC59, DC61, DC62, V6 i V7 odkurzacze_akcesoria
21 1093 Ssawko-szczotka z naturalnym włosiem do odkurzaczy ELECTROLUX AEG PHILIPS DN32; 050-003 odkurzacze_akcesoria
22 1096 1X Filtr do odkurzacza Dyson V11 SV14 V15 odkurzacze_akcesoria
23 1097 Uniwersalny zestaw końcówek do odkurzaczy 4szt + Worek na akcesoria odkurzacze_akcesoria paused
24 1098 Ssawko-szczotka z naturalnym włosiem ELECTROLUX AEG PHILIPS KARCHER ZELMER odkurzacze_akcesoria
25 1100 Rura teleskopowa z tworzywa średnica wewnętrzna 35 mm odkurzacze_akcesoria
26 1101 SSAWKA SZCZELINOWA DO ODKURZACZY KARCHER BOSCH SAMSUNG ROWENTA odkurzacze_akcesoria
27 239 Filtr HEPA 719.0150 do odkurzacza ZELMER 719 Wodnik Duo, 819 Aquario, Wodnik Duo Plus, 829 Aquos odkurzacze_akcesoria paused
28 242 Filtr powietrza wstępny 719.0060 do odkurzacza ZELMER 719 Wodnik Duo, Wodnik Duo Plus 819 Aquario odkurzacze_akcesoria paused
29 245 Rura teleskopowa do odkurzacza Zelmer Electrolux 111.6000 Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy odkurzacze_akcesoria
30 247 Ssawkoszczotka na kółkach do odkurzacza ZELMER; 449.0000P odkurzacze_akcesoria
31 250 Ssawka duża 49 P z dwoma zgarniaczami typ 170 do odkurzacza ZELMER odkurzacze_akcesoria
32 252 Ssawka średnia gładka 084 do odkurzacza ZELMER odkurzacze_akcesoria
33 253 Ssawka 800 z dwoma zgarniaczami typ 218 do odkurzacza ZELMER odkurzacze_akcesoria
34 254 Ssawka mała 49.0003 do odkurzacza ZELMER odkurzacze_akcesoria paused
35 257 Ssawka z włosem typ 800 do odkurzacza ZELMER odkurzacze_akcesoria
36 258 Ssawka z włosem typ 1020 do odkurzacza ZELMER odkurzacze_akcesoria
37 259 Szczotka okrągła z włosem typ 046 do odkurzacza ZELMER odkurzacze_akcesoria
38 260 Ssawka szczelinowa długa typ 056 do odkurzacza ZELMER odkurzacze_akcesoria
39 290 Filtr HEPA 13 IZ-FHE2 do odkurzacza ELECTROLUX Airmax, Clario, Ergo Space, Ultra Silencer odkurzacze_akcesoria
40 299 Ssawka mała z welurem SM 0535 do odkurzacza Bosch,Siemens, Moulinex , Karcher odkurzacze_akcesoria paused
41 309 Ssawka mała ze zgarniaczem do odkurzacza Electrolux, Philips SM 0232 odkurzacze_akcesoria
42 312 Ssawka szczelinowa do odkurzacza Electrolux, Philips odkurzacze_akcesoria
43 313 Ssawka duża do odkurzacza Electrolux, Philips; SE 0732 odkurzacze_akcesoria
44 400 Uniwersalne filtry do odkurzaczy wlot i wylot; IZ-WWU odkurzacze_akcesoria
45 402 Uniwersalny zestaw końcówek do odkurzaczy 4szt odkurzacze_akcesoria
46 410 Filtr S Hepa IF-33 do odkurzacza Invest FURIO, FURIO ECO odkurzacze_akcesoria
47 411 Filtr S Hepa IG-03 do odkurzacza Invest GALACTICO odkurzacze_akcesoria paused
48 419 Filtr 5000.0050K HEPA 13 do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Clarris Twix, Magnat, Jupiter, Solaris, Sola odkurzacze_akcesoria
49 421 Płyn czyszczący do odkurzaczy piorących PL.D odkurzacze_akcesoria paused
50 422 Ssawka szczelinowa giętka do odkurzacza Zelmer odkurzacze_akcesoria
51 542 Ssawkoszczotka przełączalna do odkurzaczy Zelmer 32mm odkurzacze_akcesoria
52 551 Filtr EPA 12 do odkurzacza ELECTROLUX Airmax, Clario, Ergo Space, Ultra Silencer, IZ-FHE1 odkurzacze_akcesoria paused
53 568 Wąż ssący do odkurzaczy Zelmer 1010.1100 (czarny) odkurzacze_akcesoria
54 569 Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny) Wąż ssący Zelmer 2000.1300 czarny do odkurzacza Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy odkurzacze_akcesoria paused
55 57 Worki do odkurzaczy DUO 01D011, 01D012; IZ-D011 odkurzacze_akcesoria
56 570 Wąż ssący do odkurzaczy Zelmer 321.0110 (czarny) odkurzacze_akcesoria paused
57 571 Komplet filtrów wlot i wylot do odkurzacza Electrolux Mondo; IZ-WWE3 odkurzacze_akcesoria
58 572 Szczotka parkietowa na kółkach do odkurzaczy ZELMER (czarna) 49.9500P odkurzacze_akcesoria
59 573 Turboszczotka uniwersalna z regulowaną średnicą 30-38mm odkurzacze_akcesoria paused
60 577 Ssawka ze zgarniaczem typ 168 do odkurzacza ZELMER odkurzacze_akcesoria
61 578 Ssawka mała z włosiem do odkurzacza Zelmer Akcesoria do odkurzaczy odkurzacze_akcesoria
62 579 Ssawka mała z naturalnym włosiem do odkurzacza Electrolux, Philips typ 352 odkurzacze_akcesoria
63 580 Ssawka mała 353 z naturalnym włosiem do odkurzacza Bosch, Siemens, Moulinex odkurzacze_akcesoria
64 585 Ssawka do odkurzacza Zelmer duża podłogowa 32mm 23cm typ 49.1900 zamiennik (EAN 5905857142659) Dom i ogród > Sprzęt AGD > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Końcówki i szczotki do odkurzaczy odkurzacze_akcesoria paused
65 586 Ssawka duża do odkurzacza Bosch Siemens Moulinex SE 0735 Dom i ogród > Sprzęt AGD > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Końcówki i szczotki do odkurzaczy odkurzacze_akcesoria
66 592 Filtr piankowy I typ 919.0087 do odkurzaczy Zelmer Aquos 829, Aquawelt 919 odkurzacze_akcesoria paused
67 620 Filtr piankowy typ SC43 do odkurzacza Samsung SC43 VC43 VCC43 odkurzacze_akcesoria
68 623 Ssawko-szczotka z naturalnym włosiem do odkurzaczy ELECTROLUX AEG PHILIPS DN32; 050-003 odkurzacze_akcesoria
69 676 Rura teleskopowa z tworzywa do odkurzaczy ZELMER; RTP 0132 odkurzacze_akcesoria
71 685 Ssawko-szczotka SE1635 do odkurzaczy Bosch, Samsung, LG... odkurzacze_akcesoria
72 687 Ssawko-szczotka SE1432 do odkurzaczy Electrolux... odkurzacze_akcesoria
73 688 Ssawko-szczotka SE1435 do odkurzaczy Bosch, Panasonic, Siemens... odkurzacze_akcesoria
74 748 Zestaw akcesoriów do odkurzacza iRobot Roomba TS-75 odkurzacze_akcesoria paused
75 749 Filtr do odkurzacza Rowenta Silence Force , Silence Force Compact, Silence Force, Extreme, Silence Force Extreme Compact, ZR002901 odkurzacze_akcesoria paused
76 750 Filtr do odkurzacza Karcher NT 35/1 Eco/Te/M, NT 45/1 Eco/Te/M, NT 55/1 Eco/Te/M; FK-01 odkurzacze_akcesoria
77 751 Filtr FK-03 do odkurzacza Karcher 2501, 2701, 2801, SE 2001, SE5.100, 2501 TE, A2701, 2801 plus, SE 3001, 2601, 2701 TE, A2801, 3001, SE6.100, 2601 pl odkurzacze_akcesoria
78 752 Filtr do odkurzacza Karcher NT 65/2 Eco Tc, NT 65/2 Eco, NT 72/2 Eco Tc; FK-04 odkurzacze_akcesoria
79 753 Filtr FK-10 do odkurzacza EINHELL: AFF 18, BT-VC 500 PARKSIDE: PAS 500A1, B1, C1, C2; PARK18/8C PARKSIDE 4711310437 odkurzacze_akcesoria
80 756 Filtry do odkurzacza FESTOOL CT, CTL, CTM 11, 22, 33, 44/45 Ventos 25/35, Karcher NT351, NT351/ECO, NT14/1; FK-17-2X odkurzacze_akcesoria
81 757 Filtr do odkurzacza Profi 3; FK-21 odkurzacze_akcesoria
82 765 Filtr do odkurzacza Miele S4000 S5000 S6000 S8000; GA4007 odkurzacze_akcesoria paused
83 766 Zestaw filtrów GA3833 do odkurzacza PHILIPS FC 8058/01, PowerPro Active FC 8630 odkurzacze_akcesoria paused
84 767 Ssawka okrągła z naturalnym włosiem 32 mm do odkurzaczy Zelmer , 047 odkurzacze_akcesoria
85 768 Ssawka okrągła z naturalnym włosiem 35 mm do odkurzaczy Bosch odkurzacze_akcesoria paused
86 769 Ssawka okrągła z naturalnym włosiem 32 mm do odkurzaczy Electrolux, 049 odkurzacze_akcesoria
87 771 Ssawka 3w1 do odkurzaczy Zelmer - 32 mm typ 354 odkurzacze_akcesoria paused
88 772 Szczotka ssawka do paneli z naturalnym włosiem do odkurzacza Bosch, Karcher, Siemens, Rowenta, Profi - IZ-SPU Dom i ogród > Sprzęty domowe > Akcesoria do sprzętów domowych > Akcesoria do odkurzaczy odkurzacze_akcesoria paused
89 773 Zestaw ssawek naturalnym włosiem do paneli do odkurzacza Electrolux, Amica, Samsung, Philips typ IZ-SPE odkurzacze_akcesoria paused
90 776 Filtr do odkurzaczy Kärcher WD4, WD5, WD 4.200 - WD 4.500, 6.414-960.0 OKRĄGŁY - FK-454 odkurzacze_akcesoria paused
91 777 Filtr 5000.0050ZKU HEPA 13 z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Clarris Twix, Magnat, Jupiter odkurzacze_akcesoria paused
92 781 Wkład zapachowy do odkurzaczy (granulat) o zapachu morskim AROMA odkurzacze_akcesoria
93 791 Filtr EPA 12 2000.0050KU z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Magnat, Jupiter, Solaris odkurzacze_akcesoria paused
94 793 Filtr zmywalny do odkurzacza Karcher WD 2, WD 3, NT/27, SE 4001, SE 4002, MV 2, MV3, K 2000; FK-02/P odkurzacze_akcesoria
95 794 Filtr wlotowy 601201.4070 do odkurzacza Zelmer Voyager Twix odkurzacze_akcesoria paused
96 802 Filtr piankowy SC47 do odkurzacza Samsung SC47J0, SC4320, SC4325,VCC4320S3B/XEO, VCC4325S3K/XEO, VCC4325S3R/XEO odkurzacze_akcesoria
97 808 Ssawka do odkurzacza Zelmer z welurem 32mm - mała ssawka do mebli i tapicerki Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy odkurzacze_akcesoria paused
98 809 Ssawka welurowa do odkurzacza Electrolux, Philips - mała końcówka szczelinowa SM 0332 do tapicerki, mebli, zasłon Dom i ogród > Sprzątanie > Akcesoria do sprzątania > Akcesoria do odkurzaczy > Szczotki i ssawki do odkurzaczy odkurzacze_akcesoria
99 811 Duża ssawka 415 z naturalnym włosiem do odkurzacza Zelmer odkurzacze_akcesoria
100 814 Ssawka 418 z syntetycznym włosiem do odkurzacza Bosch, Karcher, Moulinex, Siemens odkurzacze_akcesoria
101 815 Ssawka 419 z naturalnym włosiem do odkurzacza Bosch, Karcher, Moulinex, Siemens odkurzacze_akcesoria
102 816 Zestaw ssawek IZ-SPZ do paneli do odkurzaczy Zelmer odkurzacze_akcesoria paused
103 817 Zestaw ssawek IZ-ZDZ do dywanów do odkurzaczy Zelmer odkurzacze_akcesoria paused
104 818 Zestaw ssawek IZ-ZDE do dywanów i wykładzin do odkurzacza Electrolux, Philips, Amica odkurzacze_akcesoria paused
105 819 Zestaw ssawek IZ-ZDK do dywanów i wykładzin do odkurzacza Karcher, Bosch, Siemens, Profi, Rowenta odkurzacze_akcesoria paused
106 843 Mała ssawka z welurem do tapicerki śr. wew. 32 mm do odkurzacza Hoover, De Longhi, Privileg, Philips, Electrolux, Rowenta, SE 0932 odkurzacze_akcesoria
107 844 Mała ssawka z welurem do tapicerki śr. wew. 35 mm do odkurzacza Bosch, Karcher, Moulinex, Siemens, Amica, Samsung, Profi, SE 0935 odkurzacze_akcesoria
108 850 Ssawka dwurzędowa 510 ze zgarniaczem śr. wew. 32mm do odkurzacza Electrolux, Philips odkurzacze_akcesoria
109 863 Mała ssawka z welurem SM35 do odkurzacza Bosch, Karcher, Profi, Miele, Moulinex, Samsung odkurzacze_akcesoria paused
110 897 Filtr do odkurzacza Philips FC6409 FC6408 FC6170 odkurzacze_akcesoria
111 1013 UNIWERSALNY WKŁAD DO POCHŁANIACZA WILGOCI 250G pozostale
112 1036 Wkłady do pochłaniacza wilgoci 250g uniwersalne - zestaw 10 szt. tabletki absorbujące 6827 pozostale
113 1049 Butelka filtrująca Aquaphor City 500 ml granatowa + wkład pozostale paused
114 1052 Dzbanek filtrujący Aquaphor Jasper 2,8L + wkład maxfor+ pozostale paused
115 1054 Wkłady filtrujące do dzbanka Aquaphor Maxfor+ 3szt Wymienne wkłady do filtrów wody pozostale paused
116 1055 Wkład do butelki filtrującej Aquaphor City Wymienne wkłady do filtrów wody pozostale paused
117 1057 Filtr węglowy do okapów kuchennych IZ-FW2 pozostale
118 1103 Filtr do dzbanka Dafi Classic / Kenwood Anna - 6 szt. wkładów filtrujących wodę Dom i ogród > Kuchnia i jadalnia > Przybory kuchenne > Filtry do wody > Wymienne wkłady do filtrów wody pozostale
119 285 Sitko o średnicy otworów 8 mm do maszynki ZELMER z komorą 5 sitko 86.1242 pozostale
123 387 Trzepaki do miksera Zelmer 371K - komplet do robotów 181, 281, 371, 381 Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do mikserów i blenderów pozostale
124 390 Trzepaki mieszadełka do miksera Zelmer 481K - komplet do robotów 381, 481, 281, 181 Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do mikserów i blenderów pozostale
125 397 Sprzęgło ślimaka Zelmer 86.1203 do maszynki do mięsa - zamiennik do wszystkich modeli Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do rozdrabniaczy do żywności pozostale
126 45 Szatkownica do maszynki do mięsa Zelmer 586 686 886 986 - przystawka z 4 tarkami (plastry, wiórki, ziemniaki) SA01 Dom i ogród > Sprzęt AGD > Akcesoria do sprzętu AGD > Akcesoria do sprzętu AGD do przygotowywania żywności pozostale paused
127 662 Wąż dopływowy 1,0 do pralki / zmywarki - 1 m pozostale paused
128 666 Wąż dopływowy 3,0 do pralki / zmywarki - 3 m Wąż dopływowy 3 m do pralki i zmywarki Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do pralek i suszarek pozostale paused
129 835 Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481 Nasadka miksująca Zelmer 171.2000Z do robotów 371 281 381 481 Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do mikserów i blenderów pozostale paused
130 840 Filtr ochrony silnika Parkside Niteo PNTS 1300 1500 Worki do odkurzaczy pozostale
131 1 Worki do odkurzacza Zelmer Meteor Admiral 1010 1020 1030 papierowe 5 szt. + filtry 4537 worki
132 10 Worki do odkurzacza Zelmer Elf 321 322 Elf Bonus Flip papierowe 5 szt. Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
133 1015 Worki do odkurzacza Zelmer Edek - papierowe 5 szt Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
134 1023 SZCZOTKA KOŃCÓWKA DO PAROWNICY KARCHER SC SC1 SC2 SC3 SC4 SC5 worki paused
135 1037 Worki do odkurzacza Thomas Aqua+ Pet & Family X7 X8 X10 XT syntetyczne 5 szt. 4537 worki
136 1056 Worki do KARCHER WD2 PLUS WD3 SE4001 SE4002 IZ-K22SP PO worki
137 1081 5X WORKI KARCHER A2000 A2004 A2054 WD2 WD2.200 WD2.250 ZAMIENNIK worki paused
138 1083 4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio Worki syntetyczne Zelmer Józek Kazik Kazio 4 szt. Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy worki
139 1087 Worki syntetyczne do odkurzacza AMICA Surazo VM 1055, Ora VM 1032, SAMSUNG SC5480 SC5660, BEKO VCC 5325 AR, IZ-BAG05SPCZ 4szt worki
140 1088 5X Worki syntetyczne do odkurzaczy ZELMER Magnat 3000, Jupiter 4000, Maxim, Solaris Twix worki
141 1089 Worki do odkurzacza Zelmer Elf 2 321 322 Elf Bonus Flip - 6 sztuk papierowe Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
148 15 Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
149 16 Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe + filtry Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
150 17 Worki do odkurzacza Electrolux S-BAG Airmax Expression Philips Mobilo papierowe Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
151 170 Worki PANASONIC AMC 8 F01 T 1000, C 20E, MC-E 761; IZ-PC5 worki paused
152 178 Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S Worki do odkurzacza Electrolux Philips IZ-E5 PH5S Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy worki
153 2 Worki do odkurzacza Zelmer Meteor Admiral 1010 1020 1030 papierowe 5 szt. Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
154 20 Worki do odkurzacza Electrolux Cyclone Power Filio - papierowe 5 szt IZ-E13 Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
155 21 Worki do odkurzacza Amica Universis Beris Sumam Nortes papierowe 5 szt. Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki paused
156 223 Worki papierowe do MIELE Aquamarin, Automatic, Senator LX; IZ-M1/M4 worki
157 24 5X Worki do odkurzacza Zelmer XS 01Z011 + filtry, IZ-XS2F worki
158 27 worki do odkurzacza uniwersalne z uchwytem do wycinania + filtr, Typ 1010, pasują do wielu modeli odkurzaczy workowych (5 szt.) IZ-BAG01F Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy worki
159 323 Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP Worki syntetyczne Bosch Activa Alpha Siemens Super L IZ-S11SP Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy worki
160 34 Worki ELDOM OS 1200, HOLDEN Maximo OD 30, INVEST Galactico, Furio, MPM Focus, PHILIPS FC 8046, 8334, 8344, 8348; IZ-Y19 worki
161 35 Worki do odkurzacza Profi Europe Masterprofi Twist Profi 1 Profi 3 - 5 szt Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
162 408 Worek płócienny Electrolux S-bag; IZ-E5/PH5WP worki paused
163 5 Worki do odkurzacza Zelmer Meteor 2 Cobra 2000 2010 - 5 szt papierowe + filtry Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
164 507 Worki papierowe do NILFISK 818460.00, GD 1000, GD 1000 SER, GD 1005, GD 1010, GDS 1010, HDS 1010, VP 100; IZ-NI3 worki paused
165 54 Worki papierowe do Rowenta BP 61 Enduro, Bully, RB 50 - RB 52, RB 500; IZ-R4 worki
166 56 Worki papierowe do odkurzaczy SAMSUNG Easy RC 999, VP-95B; IZ-FA6 worki paused
167 6 Worki papierowe do odkurzacza Zelmer 3000 5500 Magnat Solaris Jupiter 5szt Worki do odkurzaczy worki
168 609 Worki syntetyczne do ROWENTA Silence Force, X-Treme Power; IZ-R16S worki
169 640 Worki do odkurzacza Karcher T 7/1 T 9/1 T 10/1 - papierowe 5 szt Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
170 644 Worki syntetyczne do ZELMER Multipro 01Z013 worki
171 696 Worki do odkurzacza Parkside PNTS 1250 1300 1400 1500 - 5 szt + filtr (kompat. Niteo Tools IPX 4, Blaupunkt WD4000) IZ-IPX4 Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy worki
172 70 5X Worki do odkurzacza Zelmer 700, 701, Compact, IZ-700.0020 worki paused
173 703 Worki do odkurzacza Amica Nimis Qubis Universis Ventis IZ-AM2 Worki do odkurzaczy worki
174 705 Worki do odkurzacza Blaupunkt VCB201 Bomann BS9010 BS9011 Worki do odkurzaczy worki
175 706 Worki do odkurzacza Samsung VP99; IZ-VP99 worki
176 723 Worki papierowe do odkurzacza Zelmer Józek Kazio Kazik + filtr Worki do odkurzaczy worki
177 725 Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio + filtr worki
178 729 Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt Worki papierowe Zelmer Adaś Franek Olek Kuba ZVC 333 334 335 5 szt. Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy worki
179 789 Worki do odkurzacza Wetrok Monovac 6 Plus - 5 szt IZ-WK2 Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy worki
180 8 5X Worki papierowe do odkurzacza Zelmer Orion, Cobra II Silent 2500, Orion 1500, 1600, Twist, Twister worki
181 825 Worki PHILIPS Athena Duathlon, HR6814-6855; IZ-PH6.1F worki paused
182 845 Worki syntetyczne IZ-BAG05SPCZ do odkurzacza AMICA Surazo VM 1055, Ora VM 1032, SAMSUNG SC5480 SC5660, BEKO VCC 5325 AR, IZ-BAG05SPCZ 5szt worki
183 871 Worki do odkurzacza Parkside PNTS 1300 1400 syntetyczne 5 szt. - zamiennik Lidl Einhell 4537 worki
184 880 Worki do odkurzacza Amica Ora VM1032-VM1035 12szt Worki do odkurzaczy worki

View File

@@ -7,3 +7,38 @@
{"timestamp": "2026-05-15T10:35:00+02:00", "task": "Sprawdzenie pomiaru konwersji", "status": "plan przygotowany", "campaign": "", "summary": {"conversion_actions": 11, "findings": 12, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T14:35:56+02:00", "task": "Ustawienie CL4 catch_all dla odkurzaczy bez PROFI", "status": "wdrozono zmiany", "product": "1066, 1067, 1068, 1069, 1210, 1211, 1212, 1213, 1214", "plan_path": "D:\\google ads ver 2\\clients\\investagd.pl\\plans\\2026-05-15_14-26-27_adspro_cl4_odkurzacze_catch_all.json", "summary": {"applied": 9, "errors": 0}}
{"timestamp": "2026-05-15T15:40:42+02:00", "task": "Korekta CL4 wg dost?pno?ci i promowanych odkurzaczy", "status": "wdrozono zmiany", "product": "45, 49, 55, 56, 67, 70, 99, 134, 147, 158", "plan_path": "D:\\google ads ver 2\\clients\\investagd.pl\\plans\\2026-05-15_15-36-55_adspro_cl4_availability_and_vacuum_correction.json", "summary": {"operations": 143, "applied": 143, "errors": 0, "set_paused": 141, "cleared_cl4": 2}}
{"timestamp": "2026-05-15T20:37:28+02:00", "task": "Sprawdzenie ustawien", "status": "plan przygotowany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA] catch-all, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "summary": {"campaigns": 7, "changes": 0}}
{"timestamp": "2026-05-15T20:37:29+02:00", "task": "Sprawdzenie podstawowych ustawien Search", "status": "plan przygotowany", "campaign": "[DSA] produkty, [Search] brand", "summary": {"campaigns": 2, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T20:37:32+02:00", "task": "Sprawdzenie pomiaru konwersji", "status": "plan przygotowany", "campaign": "", "summary": {"conversion_actions": 11, "findings": 12, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T20:37:37+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "plan przygotowany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "created_at": "2026-05-15T20:37:32+02:00", "summary": {"campaigns": 6, "products": 185, "create": 0, "enable": 0, "pause": 16, "rename": 6}}
{"timestamp": "2026-05-15T20:37:40+02:00", "task": "Automatyzacja tROAS per grupa reklam PLA", "status": "plan przygotowany", "campaign": "", "summary": {"ad_groups": 200, "target_changes": 0, "rollback_changes": 0, "watchlist": 199, "knowledge_rules": 1}}
{"timestamp": "2026-05-15T20:37:40+02:00", "task": "Optymalizacja tytulow produktow", "status": "plan przygotowany", "product": "1041, 569, 1068, 1045, 666, 835, 178, 729, 323, 1083", "summary": {"products": 10, "title_changes": 10, "category_changes": 0, "unit_pricing_changes": 0}}
{"timestamp": "2026-05-15T20:37:41+02:00", "task": "Optymalizacja kategorii Google", "status": "plan przygotowany", "product": "1041, 569, 1068, 1045, 666, 835, 178, 729, 323, 1083", "summary": {"products": 10, "title_changes": 0, "category_changes": 10, "unit_pricing_changes": 0}}
{"timestamp": "2026-05-15T20:37:41+02:00", "task": "Uzupelnienie unit pricing", "status": "plan przygotowany", "product": "387, 397, 16, 27, 1041, 871, 5, 1090, 808, 10", "summary": {"products": 10, "title_changes": 0, "category_changes": 0, "unit_pricing_changes": 2}}
{"timestamp": "2026-05-15T20:38:55+02:00", "task": "Sprawdzenie dostepnosci produktow", "status": "plan przygotowany", "summary": {"products_checked": 448, "available": 306, "unavailable": 138, "not_mapped": 4, "changes": 1}}
{"timestamp": "2026-05-15T20:38:57+02:00", "task": "Sprawdzenie wykorzystania budzetu", "status": "plan przygotowany", "campaign": "[PLA_CL1] pozostale, [PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA] catch-all, [Search] brand, [PLA_CL1] czajniki, [PLA_CL1] odkurzacze | catch_all", "summary": {"campaigns": 8, "knowledge_rules": 1, "changes": 0}}
{"timestamp": "2026-05-15T20:38:59+02:00", "task": "Sprawdzenie strategii stawek", "status": "plan przygotowany", "campaign": "[PLA] catch-all, [PLA_CL1] odkurzacze, [Search] brand, [PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] pozostale, [PLA_CL1] worki, [PLA_CL1] czajniki, [PLA_CL1] odkurzacze | catch_all", "summary": {"campaigns": 8, "knowledge_rules": 3, "target_changes": 0}}
{"timestamp": "2026-05-15T20:39:00+02:00", "task": "Sprawdzenie anomalii konta", "status": "plan przygotowany", "campaign": "[PLA_CL1] odkurzacze, [PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] worki, [PLA_CL1] odkurzacze, [PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] pozostale, [PLA_CL1] worki, [PLA_CL1] worki", "summary": {"campaigns": 6, "anomalies": 8, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T20:43:15+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "plan przygotowany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "created_at": "2026-05-15T20:43:09+02:00", "summary": {"campaigns": 6, "products": 185, "create": 0, "enable": 0, "pause": 76, "rename": 6}}
{"timestamp": "2026-05-15T20:45:05+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "wdrozono zmiany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "summary": {"created": 0, "enabled": 0, "create_errors": 0, "paused": 76, "renamed": 6}}
{"timestamp": "2026-05-15T21:26:50+02:00", "task": "Sprawdzenie ustawien", "status": "plan przygotowany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA] catch-all, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "summary": {"campaigns": 7, "changes": 0}}
{"timestamp": "2026-05-15T21:28:45+02:00", "task": "Sprawdzenie podstawowych ustawien Search", "status": "plan przygotowany", "campaign": "[DSA] produkty, [Search] brand", "summary": {"campaigns": 2, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T21:29:31+02:00", "task": "Sprawdzenie pomiaru konwersji", "status": "plan przygotowany", "campaign": "", "summary": {"conversion_actions": 11, "findings": 12, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T21:30:57+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "plan przygotowany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "created_at": "2026-05-15T21:30:51+02:00", "summary": {"campaigns": 6, "products": 185, "create": 0, "enable": 0, "pause": 0, "rename": 0}}
{"timestamp": "2026-05-15T21:31:31+02:00", "task": "Automatyzacja tROAS per grupa reklam PLA", "status": "plan przygotowany", "campaign": "", "summary": {"ad_groups": 124, "target_changes": 0, "rollback_changes": 0, "watchlist": 124, "knowledge_rules": 1}}
{"timestamp": "2026-05-15T21:32:47+02:00", "task": "Optymalizacja tytulow produktow", "status": "plan przygotowany", "product": "1041, 569, 1068, 1045, 666, 835, 178, 729, 323, 1083", "summary": {"products": 10, "title_changes": 10, "category_changes": 0, "unit_pricing_changes": 0}}
{"timestamp": "2026-05-15T21:34:25+02:00", "task": "Optymalizacja tytulow produktow", "status": "wdrozono zmiany", "product": "1041, 569, 1068, 1045, 666, 835, 178, 729, 323, 1083", "summary": {"applied": 10, "skipped": 0}}
{"timestamp": "2026-05-15T21:34:55+02:00", "task": "Optymalizacja kategorii Google", "status": "plan przygotowany", "product": "1041, 569, 1068, 1045, 666, 835, 178, 729, 323, 1083", "summary": {"products": 10, "title_changes": 0, "category_changes": 10, "unit_pricing_changes": 0}}
{"timestamp": "2026-05-15T21:36:21+02:00", "task": "Optymalizacja kategorii Google", "status": "wdrozono zmiany", "product": "1041, 569, 1068, 1045, 666, 835, 178, 729, 323, 1083", "summary": {"applied": 10, "skipped": 0}}
{"timestamp": "2026-05-15T21:39:58+02:00", "task": "Uzupelnienie unit pricing", "status": "plan przygotowany", "product": "387, 397, 16, 27, 1041, 871, 5, 1090, 808, 10", "summary": {"products": 10, "title_changes": 0, "category_changes": 0, "unit_pricing_changes": 2}}
{"timestamp": "2026-05-15T21:40:34+02:00", "task": "Uzupelnienie unit pricing", "status": "wdrozono zmiany", "product": "871, 1090", "summary": {"applied": 2, "skipped": 0}}
{"timestamp": "2026-05-15T21:43:21+02:00", "task": "Sprawdzenie dostepnosci produktow", "status": "plan przygotowany", "summary": {"products_checked": 448, "available": 306, "unavailable": 138, "not_mapped": 4, "changes": 1}}
{"timestamp": "2026-05-15T21:44:01+02:00", "task": "Sprawdzenie dostepnosci produktow", "status": "wdrozono zmiany", "product": "1097", "plan_path": "D:\\google ads ver 2\\clients\\investagd.pl\\plans\\2026-05-15_21-43-21_check_product_availability.json", "summary": {"applied": 1, "errors": 0}}
{"timestamp": "2026-05-15T21:44:32+02:00", "task": "Sprawdzenie wykorzystania budzetu", "status": "plan przygotowany", "campaign": "[PLA_CL1] pozostale, [PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA] catch-all, [Search] brand, [PLA_CL1] czajniki, [PLA_CL1] odkurzacze | catch_all", "summary": {"campaigns": 8, "knowledge_rules": 1, "changes": 0}}
{"timestamp": "2026-05-15T21:45:42+02:00", "task": "Sprawdzenie strategii stawek", "status": "plan przygotowany", "campaign": "[PLA] catch-all, [PLA_CL1] odkurzacze, [Search] brand, [PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] pozostale, [PLA_CL1] worki, [PLA_CL1] czajniki, [PLA_CL1] odkurzacze | catch_all", "summary": {"campaigns": 8, "knowledge_rules": 3, "target_changes": 0}}
{"timestamp": "2026-05-15T21:46:25+02:00", "task": "Sprawdzenie anomalii konta", "status": "plan przygotowany", "campaign": "[PLA_CL1] odkurzacze, [PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] worki, [PLA_CL1] odkurzacze, [PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] pozostale, [PLA_CL1] worki, [PLA_CL1] worki", "summary": {"campaigns": 6, "anomalies": 8, "knowledge_rules": 0, "changes": 0}}
{"timestamp": "2026-05-15T21:47:54+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "plan przygotowany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "created_at": "2026-05-15T21:47:48+02:00", "summary": {"campaigns": 6, "products": 185, "create": 0, "enable": 1, "pause": 2, "rename": 4}}
{"timestamp": "2026-05-15T21:48:37+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "wdrozono zmiany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "summary": {"created": 0, "enabled": 1, "create_errors": 0, "paused": 2, "renamed": 4}}
{"timestamp": "2026-05-15T21:54:28+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "plan przygotowany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "created_at": "2026-05-15T21:54:22+02:00", "summary": {"campaigns": 6, "products": 185, "create": 2, "enable": 0, "pause": 0, "rename": 2}}
{"timestamp": "2026-05-15T21:59:25+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "plan przygotowany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "created_at": "2026-05-15T21:59:19+02:00", "summary": {"campaigns": 6, "products": 185, "create": 2, "enable": 0, "pause": 0, "rename": 2}}
{"timestamp": "2026-05-15T22:00:28+02:00", "task": "Synchronizacja kampanii PLA_CL1", "status": "wdrozono zmiany", "campaign": "[PLA_CL1] odkurzacze_akcesoria, [PLA_CL1] odkurzacze, [PLA_CL1] worki, [PLA_CL1] pozostale, [PLA_CL1] odkurzacze | catch_all, [PLA_CL1] czajniki", "summary": {"created": 2, "enabled": 0, "create_errors": 0, "paused": 0, "renamed": 2}}

View File

@@ -0,0 +1,73 @@
{
"created_at": "2026-05-15T20:37:28+02:00",
"client": "investagd.pl",
"task": "check_pla_settings",
"campaigns": [
{
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23836770153",
"campaign_name": "[PLA] catch-all",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
}
],
"changes": [],
"skipped_rules": [],
"warnings": []
}

View File

@@ -0,0 +1,21 @@
# Plan: Sprawdzenie ustawien kampanii PLA
Klient: investagd.pl
Utworzono: 2026-05-15T20:37:28+02:00
## Podsumowanie
- Kampanie PLA: 7
- Korekty do wdrozenia: 0
## Kampanie PLA
| Kampania | Status | Lokalizacje | Priorytet |
| --- | --- | --- | --- |
| [PLA_CL1] odkurzacze_akcesoria | ENABLED | Obecność | Wysoki |
| [PLA_CL1] odkurzacze | ENABLED | Obecność | Wysoki |
| [PLA_CL1] worki | ENABLED | Obecność | Wysoki |
| [PLA_CL1] pozostale | ENABLED | Obecność | Wysoki |
| [PLA] catch-all | ENABLED | Obecność | Wysoki |
| [PLA_CL1] odkurzacze | catch_all | ENABLED | Obecność | Wysoki |
| [PLA_CL1] czajniki | ENABLED | Obecność | Wysoki |

View File

@@ -0,0 +1,60 @@
{
"created_at": "2026-05-15T20:37:29+02:00",
"client": "investagd.pl",
"task": "check_search_basic_settings",
"task_name": "Sprawdzenie podstawowych ustawien Search",
"campaigns": [
{
"campaign_id": "20530740619",
"campaign_name": "[DSA] produkty",
"status": "PAUSED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecnosc",
"target_google_search": true,
"target_search_network": false,
"target_partner_search_network": false,
"target_content_network": false
},
{
"campaign_id": "22934868198",
"campaign_name": "[Search] brand",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecnosc",
"target_google_search": true,
"target_search_network": false,
"target_partner_search_network": false,
"target_content_network": false
}
],
"changes": [],
"scope": [
{
"area": "Lokalizacje",
"check": "Wymagaj kierowania lokalizacji na Obecnosc; inne tryby przygotuj jako korekte do wdrozenia."
},
{
"area": "Sieci",
"check": "Wymagaj wylaczonej sieci reklamowej i wylaczonych partnerow wyszukiwania w kampaniach Search."
},
{
"area": "Jezyki",
"check": "Sprawdz, czy ustawienia jezykowe sa zgodne z rynkiem klienta."
},
{
"area": "Harmonogram reklam",
"check": "Sprawdz, czy harmonogram jest swiadomie ustawiony albo czy kampania dziala caly czas."
}
],
"out_of_scope": [
"budzety i wykorzystanie budzetu",
"strategie stawek i uczenie strategii",
"zapytania uzytkownikow oraz wykluczenia",
"reklamy RSA i zasoby reklam",
"wyniki kampanii oraz rentownosc"
],
"knowledge_rules": [],
"warnings": [
"Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Uzyj `python gads.py wiedza przypisz --restart`, gdy bedziemy wybierac reguly dla Search."
]
}

View File

@@ -0,0 +1,38 @@
# Plan: Sprawdzenie podstawowych ustawien Search
Klient: investagd.pl
Utworzono: 2026-05-15T20:37:29+02:00
## Podsumowanie
- Kampanie Search: 2
- Reguly wiedzy przypisane do zadania: 0
- Zmiany do wdrozenia: 0
## Uwagi
- Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Uzyj `python gads.py wiedza przypisz --restart`, gdy bedziemy wybierac reguly dla Search.
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Lokalizacje | Wymagaj kierowania lokalizacji na Obecnosc; inne tryby przygotuj jako korekte do wdrozenia. |
| Sieci | Wymagaj wylaczonej sieci reklamowej i wylaczonych partnerow wyszukiwania w kampaniach Search. |
| Jezyki | Sprawdz, czy ustawienia jezykowe sa zgodne z rynkiem klienta. |
| Harmonogram reklam | Sprawdz, czy harmonogram jest swiadomie ustawiony albo czy kampania dziala caly czas. |
## Poza zakresem tego zadania
- budzety i wykorzystanie budzetu
- strategie stawek i uczenie strategii
- zapytania uzytkownikow oraz wykluczenia
- reklamy RSA i zasoby reklam
- wyniki kampanii oraz rentownosc
## Kampanie Search
| Kampania | Status | Lokalizacje | Google Search | Search Network | Partnerzy | Siec reklamowa |
| --- | --- | --- | --- | --- | --- | --- |
| [DSA] produkty | PAUSED | Obecnosc | TAK | NIE | NIE | NIE |
| [Search] brand | ENABLED | Obecnosc | TAK | NIE | NIE | NIE |

View File

@@ -0,0 +1,437 @@
{
"created_at": "2026-05-15T20:37:32+02:00",
"client": "investagd.pl",
"task": "check_conversion_tracking",
"task_name": "Sprawdzenie pomiaru konwersji",
"currency_code": "PLN",
"conversion_actions": [
{
"conversion_action_id": "7148777438",
"resource_name": "customers/2298555588/conversionActions/7148777438",
"name": "GADS - add_to_cart",
"status": "ENABLED",
"type": "WEBPAGE",
"category": "ADD_TO_CART",
"primary_for_goal": false,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 30,
"view_window_days": 1,
"attribution_model": "GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni"
],
"recommendation": "Sprawdz, czy akcja nadal powinna byc aktywna i czy tag uruchamia sie na wlasciwym zdarzeniu."
},
{
"conversion_action_id": "7075615613",
"resource_name": "customers/2298555588/conversionActions/7075615613",
"name": "Clicks to call",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "CONTACT",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 2.0,
"all_conversion_value_30d": 2.0,
"is_collecting_data": true,
"problem_flags": [
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7061592203",
"resource_name": "customers/2298555588/conversionActions/7061592203",
"name": "Działania lokalne inne interakcje",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "ENGAGEMENT",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 29.0,
"all_conversion_value_30d": 29.0,
"is_collecting_data": true,
"problem_flags": [
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7053031175",
"resource_name": "customers/2298555588/conversionActions/7053031175",
"name": "YouTube channel subscriptions",
"status": "ENABLED",
"type": "UNKNOWN",
"category": "ENGAGEMENT",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "ONE_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 1,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni",
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7075914415",
"resource_name": "customers/2298555588/conversionActions/7075914415",
"name": "Local actions - Directions",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "GET_DIRECTIONS",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 3.0,
"all_conversion_value_30d": 3.0,
"is_collecting_data": true,
"problem_flags": [
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7069930207",
"resource_name": "customers/2298555588/conversionActions/7069930207",
"name": "Local actions - Website visits",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "PAGE_VIEW",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni",
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7380507064",
"resource_name": "customers/2298555588/conversionActions/7380507064",
"name": "Calls from ads",
"status": "ENABLED",
"type": "AD_CALL",
"category": "PHONE_CALL_LEAD",
"primary_for_goal": false,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "XXX",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 30,
"attribution_model": "GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 5.0,
"all_conversion_value_30d": 5.0,
"is_collecting_data": true,
"problem_flags": [
"ok"
],
"recommendation": "Bez pilnej zmiany; zostaw jako kontekst albo konwersje dodatkowa."
},
{
"conversion_action_id": "7058948335",
"resource_name": "customers/2298555588/conversionActions/7058948335",
"name": "Investagd.pl GA4 (G-NW44987MSE) (web) purchase",
"status": "ENABLED",
"type": "GOOGLE_ANALYTICS_4_PURCHASE",
"category": "PURCHASE",
"primary_for_goal": true,
"include_in_conversions_metric": true,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 90,
"view_window_days": 1,
"attribution_model": "UNKNOWN",
"conversions_30d": 69.0,
"conversion_value_30d": 3177.07,
"all_conversions_30d": 120.25,
"all_conversion_value_30d": 5987.77,
"is_collecting_data": true,
"problem_flags": [
"ok"
],
"recommendation": "Dane zakupowe wygladaja na podstawowy sygnal optymalizacji; kontroluj wartosc i duplikacje."
},
{
"conversion_action_id": "6574100052",
"resource_name": "customers/2298555588/conversionActions/6574100052",
"name": "purchase",
"status": "ENABLED",
"type": "WEBPAGE",
"category": "PURCHASE",
"primary_for_goal": true,
"include_in_conversions_metric": true,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 30,
"view_window_days": 1,
"attribution_model": "GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni",
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7460221088",
"resource_name": "customers/2298555588/conversionActions/7460221088",
"name": "Wyświetlenia po obejrzeniu reklamy w YouTube",
"status": "ENABLED",
"type": "UNKNOWN",
"category": "YOUTUBE_FOLLOW_ON_VIEWS",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 1,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 1.0,
"all_conversion_value_30d": 1.0,
"is_collecting_data": true,
"problem_flags": [
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7058948338",
"resource_name": "customers/2298555588/conversionActions/7058948338",
"name": "Investagd.pl GA4 (G-NW44987MSE) (web) generate_lead",
"status": "HIDDEN",
"type": "GOOGLE_ANALYTICS_4_CUSTOM",
"category": "PAGE_VIEW",
"primary_for_goal": false,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 90,
"view_window_days": 1,
"attribution_model": "UNKNOWN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"akcja nieaktywna"
],
"recommendation": "Zostaw nieaktywna, jesli jest historyczna; w przeciwnym razie uporzadkuj konfiguracje konwersji."
}
],
"action_summary": [
{
"metric": "akcje konwersji",
"count": 11
},
{
"metric": "aktywne",
"count": 10
},
{
"metric": "podstawowe",
"count": 8
},
{
"metric": "zbieraja dane 30 dni",
"count": 6
},
{
"metric": "z problemami",
"count": 9
},
{
"metric": "podstawowe z danymi",
"count": 1
}
],
"findings": [
{
"severity": "wysokie",
"area": "CONTACT",
"item": "Clicks to call",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "ENGAGEMENT",
"item": "Działania lokalne inne interakcje",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "ENGAGEMENT",
"item": "YouTube channel subscriptions",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "GET_DIRECTIONS",
"item": "Local actions - Directions",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "PAGE_VIEW",
"item": "Local actions - Website visits",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "PURCHASE",
"item": "purchase",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "YOUTUBE_FOLLOW_ON_VIEWS",
"item": "Wyświetlenia po obejrzeniu reklamy w YouTube",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "srednie",
"area": "ADD_TO_CART",
"item": "GADS - add_to_cart",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz, czy akcja nadal powinna byc aktywna i czy tag uruchamia sie na wlasciwym zdarzeniu."
},
{
"severity": "srednie",
"area": "ENGAGEMENT",
"item": "YouTube channel subscriptions",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "srednie",
"area": "PAGE_VIEW",
"item": "Investagd.pl GA4 (G-NW44987MSE) (web) generate_lead",
"problem": "akcja nieaktywna",
"recommendation": "Zostaw nieaktywna, jesli jest historyczna; w przeciwnym razie uporzadkuj konfiguracje konwersji."
},
{
"severity": "srednie",
"area": "PAGE_VIEW",
"item": "Local actions - Website visits",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "srednie",
"area": "PURCHASE",
"item": "purchase",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
}
],
"changes": [],
"scope": [
{
"area": "Akcje konwersji",
"check": "Pobierz akcje konwersji z Google Ads, ich status, typ, kategorie i ustawienie podstawowa/dodatkowa."
},
{
"area": "Dane 30 dni",
"check": "Sprawdz, czy akcje konwersji zbieraja konwersje, wartosc konwersji i wszystkie konwersje z ostatnich 30 dni."
},
{
"area": "Wartosc konwersji",
"check": "Oznacz konwersje zakupowe i e-commerce bez wartosci albo bez waluty jako problem do poprawy pomiaru."
},
{
"area": "Jakosc optymalizacji",
"check": "Oznacz brak aktywnych konwersji podstawowych, brak danych 30 dni oraz podejrzana duplikacje podobnych akcji."
},
{
"area": "Rekomendacje",
"check": "Przygotuj rekomendacje decyzyjne do konfiguracji pomiaru; skrypt nie wdraza zmian automatycznie."
}
],
"knowledge_rules": [],
"warnings": [
"Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Reguly dotyczace pomiaru konwersji warto dopisac po pierwszych audytach."
]
}

View File

@@ -0,0 +1,69 @@
# Plan: Sprawdzenie pomiaru konwersji
Klient: investagd.pl
Utworzono: 2026-05-15T20:37:32+02:00
## Podsumowanie
- Akcje konwersji: 11
- Problemy / rekomendacje: 12
- Reguly wiedzy przypisane do zadania: 0
- Zmiany do wdrozenia: 0
## Uwagi
- Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Reguly dotyczace pomiaru konwersji warto dopisac po pierwszych audytach.
## Zakres audytu
| Obszar | Co sprawdzic |
| --- | --- |
| Akcje konwersji | Pobierz akcje konwersji z Google Ads, ich status, typ, kategorie i ustawienie podstawowa/dodatkowa. |
| Dane 30 dni | Sprawdz, czy akcje konwersji zbieraja konwersje, wartosc konwersji i wszystkie konwersje z ostatnich 30 dni. |
| Wartosc konwersji | Oznacz konwersje zakupowe i e-commerce bez wartosci albo bez waluty jako problem do poprawy pomiaru. |
| Jakosc optymalizacji | Oznacz brak aktywnych konwersji podstawowych, brak danych 30 dni oraz podejrzana duplikacje podobnych akcji. |
| Rekomendacje | Przygotuj rekomendacje decyzyjne do konfiguracji pomiaru; skrypt nie wdraza zmian automatycznie. |
## Podsumowanie akcji
| Metryka | Liczba |
| --- | --- |
| akcje konwersji | 11 |
| aktywne | 10 |
| podstawowe | 8 |
| zbieraja dane 30 dni | 6 |
| z problemami | 9 |
| podstawowe z danymi | 1 |
## Problemy i rekomendacje
| Waznosc | Obszar | Element | Problem | Rekomendacja |
| --- | --- | --- | --- | --- |
| wysokie | CONTACT | Clicks to call | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | ENGAGEMENT | Działania lokalne inne interakcje | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | ENGAGEMENT | YouTube channel subscriptions | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | GET_DIRECTIONS | Local actions - Directions | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | PAGE_VIEW | Local actions - Website visits | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | PURCHASE | purchase | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | YOUTUBE_FOLLOW_ON_VIEWS | Wyświetlenia po obejrzeniu reklamy w YouTube | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| srednie | ADD_TO_CART | GADS - add_to_cart | brak danych 30 dni | Sprawdz, czy akcja nadal powinna byc aktywna i czy tag uruchamia sie na wlasciwym zdarzeniu. |
| srednie | ENGAGEMENT | YouTube channel subscriptions | brak danych 30 dni | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| srednie | PAGE_VIEW | Investagd.pl GA4 (G-NW44987MSE) (web) generate_lead | akcja nieaktywna | Zostaw nieaktywna, jesli jest historyczna; w przeciwnym razie uporzadkuj konfiguracje konwersji. |
| srednie | PAGE_VIEW | Local actions - Website visits | brak danych 30 dni | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| srednie | PURCHASE | purchase | brak danych 30 dni | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
## Akcje konwersji
| Nazwa | Status | Typ | Kategoria | Podstawowa | W konwersjach | Konw. 30d | Wartosc 30d | Wszystkie konw. 30d | Wartosc wszystkich 30d | Okno klik. | Okno view | Problemy |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| GADS - add_to_cart | ENABLED | WEBPAGE | ADD_TO_CART | NIE | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 1 | brak danych 30 dni |
| Clicks to call | ENABLED | GOOGLE_HOSTED | CONTACT | TAK | NIE | 0.00 | 0.00 PLN | 2.00 | 2.00 PLN | 30 | 7 | podstawowa bez konwersji |
| Działania lokalne inne interakcje | ENABLED | GOOGLE_HOSTED | ENGAGEMENT | TAK | NIE | 0.00 | 0.00 PLN | 29.00 | 29.00 PLN | 30 | 7 | podstawowa bez konwersji |
| YouTube channel subscriptions | ENABLED | UNKNOWN | ENGAGEMENT | TAK | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 1 | brak danych 30 dni, podstawowa bez konwersji |
| Local actions - Directions | ENABLED | GOOGLE_HOSTED | GET_DIRECTIONS | TAK | NIE | 0.00 | 0.00 PLN | 3.00 | 3.00 PLN | 30 | 7 | podstawowa bez konwersji |
| Local actions - Website visits | ENABLED | GOOGLE_HOSTED | PAGE_VIEW | TAK | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 7 | brak danych 30 dni, podstawowa bez konwersji |
| Calls from ads | ENABLED | AD_CALL | PHONE_CALL_LEAD | NIE | NIE | 0.00 | 0.00 PLN | 5.00 | 5.00 PLN | 30 | 30 | ok |
| Investagd.pl GA4 (G-NW44987MSE) (web) purchase | ENABLED | GOOGLE_ANALYTICS_4_PURCHASE | PURCHASE | TAK | TAK | 69.00 | 3177.07 PLN | 120.25 | 5987.77 PLN | 90 | 1 | ok |
| purchase | ENABLED | WEBPAGE | PURCHASE | TAK | TAK | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 1 | brak danych 30 dni, podstawowa bez konwersji |
| Wyświetlenia po obejrzeniu reklamy w YouTube | ENABLED | UNKNOWN | YOUTUBE_FOLLOW_ON_VIEWS | TAK | NIE | 0.00 | 0.00 PLN | 1.00 | 1.00 PLN | 30 | 1 | podstawowa bez konwersji |
| Investagd.pl GA4 (G-NW44987MSE) (web) generate_lead | HIDDEN | GOOGLE_ANALYTICS_4_CUSTOM | PAGE_VIEW | NIE | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 90 | 1 | akcja nieaktywna |

View File

@@ -0,0 +1,748 @@
{
"created_at": "2026-05-15T20:37:37+02:00",
"client": "investagd.pl",
"products_count": 185,
"task": "sync_pla_cl1",
"campaigns": [
{
"id": "23797182612",
"name": "[PLA_CL1] odkurzacze_akcesoria",
"status": "ENABLED",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": ""
},
{
"id": "23797198440",
"name": "[PLA_CL1] odkurzacze",
"status": "ENABLED",
"allowed": [
"odkurzacze"
],
"variant": ""
},
{
"id": "23825822059",
"name": "[PLA_CL1] worki",
"status": "ENABLED",
"allowed": [
"worki"
],
"variant": ""
},
{
"id": "23825825449",
"name": "[PLA_CL1] pozostale",
"status": "ENABLED",
"allowed": [
"pozostale"
],
"variant": ""
},
{
"id": "23846225484",
"name": "[PLA_CL1] odkurzacze | catch_all",
"status": "ENABLED",
"allowed": [
"odkurzacze"
],
"variant": "catch_all"
},
{
"id": "23846238222",
"name": "[PLA_CL1] czajniki",
"status": "ENABLED",
"allowed": [
"czajniki"
],
"variant": ""
}
],
"groups_total": 353,
"groups_with_product_id": 346,
"create_plan": [],
"enable_plan": [],
"pause_plan": [
{
"ad_group_id": "196211383189",
"ad_group_name": "Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211383389",
"ad_group_name": "ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211383429",
"ad_group_name": "Odkurzacz workowy Profi 1.2",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211383669",
"ad_group_name": "ODKURZACZ WORKOWY VM 1058 SURAZO",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211383829",
"ad_group_name": "ODKURZACZ WORKOWY INVEST GALACTICO 850 W",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211383869",
"ad_group_name": "Odkurzacz workowy Profi P6 + 5x worki - zestaw",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211383909",
"ad_group_name": "ODKURZACZ WORKOWY AMICA VM 1033 ORA",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211384069",
"ad_group_name": "Odkurzacz workowy Profi P6",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211384109",
"ad_group_name": "Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211384149",
"ad_group_name": "Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211384309",
"ad_group_name": "Odkurzacz workowy Profi 1.2.1",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211384629",
"ad_group_name": "Odkurzacz przemysłowy Invest Profus III - budowlany warsztatowy do pracy na sucho i mokro 1200W 10L",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211385109",
"ad_group_name": "ODKURZACZ WORKOWY ZELMER TADEK ZVC261",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "196211385269",
"ad_group_name": "Odkurzacz workowy Profi 11.5",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "199094717027",
"ad_group_name": "ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"reason": "produkt jest w zlej kampanii"
},
{
"ad_group_id": "199094718427",
"ad_group_name": "ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"reason": "produkt jest w zlej kampanii"
}
],
"rename_plan": [
{
"ad_group_id": "193175051701",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"old_name": "Worki do odkurzacza Electrolux Mondo E44 E49",
"new_name": "Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe + filtry"
},
{
"ad_group_id": "193175052221",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"old_name": "5X Worki papierowe do odkurzacza Zelmer 2000, Aquawelt, Aquos, Cobra, Meteor 2, Voyager",
"new_name": "Worki do odkurzacza Zelmer Meteor 2 Cobra Aquawelt Voyager - papierowe 5 szt"
},
{
"ad_group_id": "193175052381",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"old_name": "5 SZT WORKI DO LIDL PARKSIDE PNTS 1300 1400",
"new_name": "Worki do odkurzacza Parkside PNTS 1300 1400 syntetyczne 5 szt. - zamiennik Lidl Einhell"
},
{
"ad_group_id": "193175052941",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"old_name": "Worki do odkurzaczy Amica Nimis VM 1021, 1022, Qubis Base VJ 1031, 1032, Universis Base VK 1012, Universis VK 1011, Ventis VK 4021 IZ-AM2/AM3S",
"new_name": "Worki do odkurzacza Amica Nimis Qubis Universis Ventis IZ-AM2"
},
{
"ad_group_id": "193175053821",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"old_name": "Worki ELECTROLUX E 44, E 49, Mondo, Mondo E 49, Mondo II, Mondo Z 1100 - 1199",
"new_name": "Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe"
},
{
"ad_group_id": "191439362530",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"old_name": "Zelmer zestaw trzepaków do miksera 181 281 371 381",
"new_name": "Trzepaki do miksera Zelmer 371K - komplet do robotów 181, 281, 371, 381"
}
],
"warnings": [
"Grupy reklam bez dopasowania w adsPRO: 43.",
"Produkty z CL4, ale bez kampanii-wariantu, przypisane do kampanii bazowej: 60.",
"Grupy reklam w zlym wariancie kampanii (CL4 nie pasuje): 18.",
"Grupy reklam w zlej kampanii (CL1 nie pasuje): 106."
],
"unmatched_groups": [
{
"ad_group_id": "194749203006",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "912"
},
{
"ad_group_id": "194749203046",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "619"
},
{
"ad_group_id": "194749203086",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "64"
},
{
"ad_group_id": "194749203286",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "194749203526",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "637"
},
{
"ad_group_id": "194749203766",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "778"
},
{
"ad_group_id": "194749203806",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "784"
},
{
"ad_group_id": "196794680140",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "637"
},
{
"ad_group_id": "196794680380",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "778"
},
{
"ad_group_id": "196794680540",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "196794680620",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "912"
},
{
"ad_group_id": "196794680780",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "619"
},
{
"ad_group_id": "196794680820",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "64"
},
{
"ad_group_id": "196794681340",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "784"
},
{
"ad_group_id": "193175051941",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "637"
},
{
"ad_group_id": "193175051981",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "193175052141",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "619"
},
{
"ad_group_id": "193175052461",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "778"
},
{
"ad_group_id": "193175052701",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "64"
},
{
"ad_group_id": "193175053101",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "784"
},
{
"ad_group_id": "193175053861",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "912"
},
{
"ad_group_id": "191439361170",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "637"
},
{
"ad_group_id": "191439361330",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "191439361370",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "619"
},
{
"ad_group_id": "191439362130",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "64"
},
{
"ad_group_id": "191439362370",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "778"
},
{
"ad_group_id": "191439363010",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "912"
},
{
"ad_group_id": "191439363570",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "784"
},
{
"ad_group_id": "196211383109",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "778"
},
{
"ad_group_id": "196211383349",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "64"
},
{
"ad_group_id": "196211383629",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "784"
},
{
"ad_group_id": "196211384389",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "912"
},
{
"ad_group_id": "196211385309",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "637"
},
{
"ad_group_id": "196211385349",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": ""
},
{
"ad_group_id": "196211385509",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "619"
},
{
"ad_group_id": "196993753336",
"ad_group_name": "deleted01",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "197306992220",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "778"
},
{
"ad_group_id": "197306992460",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "64"
},
{
"ad_group_id": "197306992980",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "637"
},
{
"ad_group_id": "197306993020",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "197306993180",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "619"
},
{
"ad_group_id": "197306993660",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "784"
},
{
"ad_group_id": "197306994420",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "912"
}
]
}

View File

@@ -0,0 +1,111 @@
# Plan: Synchronizacja kampanii PLA_CL1
Klient: investagd.pl
Utworzono: 2026-05-15T20:37:37+02:00
## Podsumowanie
- Kampanie PLA_CL1: 6
- Produkty z adsPRO: 185
- Grupy reklam obecnie: 353
- Grupy reklam z identyfikatorem produktu: 346
- Do utworzenia: 0
- Do włączenia: 0
- Do wstrzymania: 16
- Do zmiany nazwy: 6
## Uwagi
- Grupy reklam bez dopasowania w adsPRO: 43.
- Produkty z CL4, ale bez kampanii-wariantu, przypisane do kampanii bazowej: 60.
- Grupy reklam w zlym wariancie kampanii (CL4 nie pasuje): 18.
- Grupy reklam w zlej kampanii (CL1 nie pasuje): 106.
## Podsumowanie po kampaniach
| Kampania | Utworz | Wlacz | Wstrzymaj | Zmien nazwe |
| --- | ---: | ---: | ---: | ---: |
| [PLA_CL1] odkurzacze | 0 | 0 | 2 | 0 |
| [PLA_CL1] odkurzacze | catch_all | 0 | 0 | 14 | 0 |
| [PLA_CL1] pozostale | 0 | 0 | 0 | 1 |
| [PLA_CL1] worki | 0 | 0 | 0 | 5 |
## Grupy reklam bez dopasowania w adsPRO
| Kampania | Grupa reklam | Status | Identyfikator produktu |
| --- | --- | --- | --- |
| [PLA_CL1] odkurzacze_akcesoria | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze_akcesoria | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] odkurzacze_akcesoria | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] odkurzacze_akcesoria | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] odkurzacze_akcesoria | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] odkurzacze_akcesoria | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] odkurzacze_akcesoria | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] odkurzacze | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] odkurzacze | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] odkurzacze | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] odkurzacze | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] odkurzacze | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] odkurzacze | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] worki | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] worki | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] worki | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] worki | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] worki | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] worki | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] worki | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] pozostale | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] pozostale | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] pozostale | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] pozostale | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] pozostale | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] pozostale | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] pozostale | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] odkurzacze | catch_all | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] odkurzacze | catch_all | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] odkurzacze | catch_all | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] odkurzacze | catch_all | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze | catch_all | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] odkurzacze | catch_all | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] odkurzacze | catch_all | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] czajniki | deleted01 | PAUSED | |
| [PLA_CL1] czajniki | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] czajniki | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] czajniki | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] czajniki | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] czajniki | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] czajniki | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] czajniki | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
## Grupy reklam do wstrzymania
| Kampania | Grupa reklam | Powod |
| --- | --- | --- |
| [PLA_CL1] odkurzacze | catch_all | Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi 1.2 | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY VM 1058 SURAZO | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY INVEST GALACTICO 850 W | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi P6 + 5x worki - zestaw | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY AMICA VM 1033 ORA | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi P6 | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi 1.2.1 | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz przemysłowy Invest Profus III - budowlany warsztatowy do pracy na sucho i mokro 1200W 10L | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY ZELMER TADEK ZVC261 | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi 11.5 | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki | produkt jest w zlej kampanii |
## Nazwy grup reklam do zmiany
| Kampania | Obecna nazwa | Nowa nazwa |
| --- | --- | --- |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux Mondo E44 E49 | Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe + filtry |
| [PLA_CL1] worki | 5X Worki papierowe do odkurzacza Zelmer 2000, Aquawelt, Aquos, Cobra, Meteor 2, Voyager | Worki do odkurzacza Zelmer Meteor 2 Cobra Aquawelt Voyager - papierowe 5 szt |
| [PLA_CL1] worki | 5 SZT WORKI DO LIDL PARKSIDE PNTS 1300 1400 | Worki do odkurzacza Parkside PNTS 1300 1400 syntetyczne 5 szt. - zamiennik Lidl Einhell |
| [PLA_CL1] worki | Worki do odkurzaczy Amica Nimis VM 1021, 1022, Qubis Base VJ 1031, 1032, Universis Base VK 1012, Universis VK 1011, Ventis VK 4021 IZ-AM2/AM3S | Worki do odkurzacza Amica Nimis Qubis Universis Ventis IZ-AM2 |
| [PLA_CL1] worki | Worki ELECTROLUX E 44, E 49, Mondo, Mondo E 49, Mondo II, Mondo Z 1100 - 1199 | Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe |
| [PLA_CL1] pozostale | Zelmer zestaw trzepaków do miksera 181 281 371 381 | Trzepaki do miksera Zelmer 371K - komplet do robotów 181, 281, 371, 381 |

View File

@@ -0,0 +1,215 @@
{
"created_at": "2026-05-15T20:37:40+02:00",
"client": "investagd.pl",
"task": "optimize_product_titles",
"task_name": "Optymalizacja tytulow produktow",
"products": [
{
"offer_id": "1041",
"default_name": "Odkurzacz workowy Profi 1.2.1",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 113,
"impressions": 4813,
"cost": 183.32
},
{
"offer_id": "569",
"default_name": "Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny)",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 46,
"impressions": 1716,
"cost": 43.43
},
{
"offer_id": "1068",
"default_name": "ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 44,
"impressions": 2360,
"cost": 67.09
},
{
"offer_id": "1045",
"default_name": "Odkurzacz workowy Profi 11.5",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 43,
"impressions": 4511,
"cost": 74.34
},
{
"offer_id": "666",
"default_name": "Wąż dopływowy 3,0 do pralki / zmywarki - 3 m",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 38,
"impressions": 1268,
"cost": 16.39
},
{
"offer_id": "835",
"default_name": "Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 37,
"impressions": 1345,
"cost": 24.18
},
{
"offer_id": "178",
"default_name": "Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 36,
"impressions": 1551,
"cost": 41.07
},
{
"offer_id": "729",
"default_name": "Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 36,
"impressions": 935,
"cost": 30.6
},
{
"offer_id": "323",
"default_name": "Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 34,
"impressions": 2299,
"cost": 21.22
},
{
"offer_id": "1083",
"default_name": "4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 33,
"impressions": 1357,
"cost": 41.25
}
],
"title_changes": [
{
"offer_id": "1041",
"field": "title",
"current_value": "Odkurzacz workowy Profi 1.2.1",
"target_value": "",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "569",
"field": "title",
"current_value": "Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny)",
"target_value": "",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1068",
"field": "title",
"current_value": "ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T",
"target_value": "Odkurzacz Workowy Zelmer Antek Zvc3501T",
"reason": "brak zoptymalizowanego tytulu lub tytul wymaga normalizacji"
},
{
"offer_id": "1045",
"field": "title",
"current_value": "Odkurzacz workowy Profi 11.5",
"target_value": "",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "666",
"field": "title",
"current_value": "Wąż dopływowy 3,0 do pralki / zmywarki - 3 m",
"target_value": "",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "835",
"field": "title",
"current_value": "Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481",
"target_value": "",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "178",
"field": "title",
"current_value": "Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S",
"target_value": "",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "729",
"field": "title",
"current_value": "Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt",
"target_value": "",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "323",
"field": "title",
"current_value": "Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP",
"target_value": "",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1083",
"field": "title",
"current_value": "4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio",
"target_value": "",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
}
],
"category_changes": [],
"unit_pricing_changes": [],
"skipped": [],
"warnings": [
"Czesc tytulow wymaga decyzji agenta AI; skrypt nie przepisuje tytulu bazowego jako optymalizacji."
]
}

View File

@@ -0,0 +1,31 @@
# Plan: Optymalizacja tytulow produktow
Klient: investagd.pl
Utworzono: 2026-05-15T20:37:40+02:00
## Podsumowanie
- Produkty z adsPRO: 10
- Tytuly do zmiany: 10
- Kategorie do uzupelnienia: 0
- Unit pricing do zmiany: 0
- Pominiete: 0
## Uwagi
- Czesc tytulow wymaga decyzji agenta AI; skrypt nie przepisuje tytulu bazowego jako optymalizacji.
## Tytuly do decyzji lub zmiany
| Produkt | Obecnie | Docelowo | Powod |
| --- | --- | --- | --- |
| 1041 | Odkurzacz workowy Profi 1.2.1 | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 569 | Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny) | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 1068 | ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T | Odkurzacz Workowy Zelmer Antek Zvc3501T | brak zoptymalizowanego tytulu lub tytul wymaga normalizacji |
| 1045 | Odkurzacz workowy Profi 11.5 | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 666 | Wąż dopływowy 3,0 do pralki / zmywarki - 3 m | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 835 | Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481 | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 178 | Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 729 | Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 323 | Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 1083 | 4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,241 @@
# Plan: Automatyzacja tROAS per grupa reklam PLA
Klient: investagd.pl
Utworzono: 2026-05-15T20:37:40+02:00
## Podsumowanie
- Grupy reklam Shopping z danymi 30 dni: 200
- Kandydaci do podniesienia tROAS: 0
- Kandydaci do rollbacku: 0
- Watchlista bez akcji: 199
- Reguly wiedzy przypisane do zadania: 1
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Zakres | Analizuje tylko aktywne grupy reklam w aktywnych kampaniach Standard Shopping. |
| Dane 30 dni | Liczy realny ROAS grupy reklam z kosztu i wartosci konwersji z ostatnich 30 dni. |
| 100 klikow | Grupy reklam z mniej niz 100 klikami od poczatku trafiaja tylko na watchliste. |
| Trigger 10 konwersji | Podbicie tROAS wymaga co najmniej 10 nowych konwersji wzgledem lokalnego baseline. |
| Stopniowanie | Jedna analiza moze podniesc tROAS grupy reklam maksymalnie o 0.5. |
| Rollback | Jesli po zmianie realny ROAS z 30 dni spada ponizej ustawionego tROAS, plan proponuje przywrocenie poprzedniej wartosci. |
## Watchlista bez akcji
| Kampania | Grupa reklam | Klikniecia all-time | Konwersje 30 dni | Real ROAS | Powod |
| --- | --- | --- | --- | --- | --- |
| [PLA] catch-all | Grupa reklam 1 | 50 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Sprzęgło ślimaka Zelmer 86.1203 do maszynki do mięsa - zamiennik do wszystkich modeli | 42 | 1.00 | 0.56 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | worki do odkurzacza uniwersalne z uchwytem do wycinania + filtr, Typ 1010, pasują do wielu modeli odkurzaczy workowych (5 szt.) IZ-BAG01F | 41 | 1.28 | 1.62 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T | 38 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Trzepaki mieszadełka do miksera Zelmer 481K - komplet do robotów 381, 481, 281, 181 | 31 | 1.00 | 1.39 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Filtr do dzbanka Dafi Classic / Kenwood Anna - 6 szt. wkładów filtrujących wodę | 30 | 2.00 | 1.84 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Meteor Admiral 1010 1020 1030 papierowe 5 szt. + filtry | 29 | 1.45 | 3.23 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | Odkurzacz workowy Profi P6 + 5x worki - zestaw | 28 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny) | 26 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka do odkurzacza Zelmer z welurem 32mm - mała ssawka do mebli i tapicerki | 25 | 2.00 | 1.94 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Meteor 2 Cobra 2000 2010 - 5 szt papierowe + filtry | 25 | 1.50 | 2.75 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | Odkurzacz workowy Profi 11.5 | 23 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Szatkownica do maszynki do mięsa Zelmer 586 686 886 986 - przystawka z 4 tarkami (plastry, wiórki, ziemniaki) SA01 | 21 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | Odkurzacz workowy Profi 1.2 | 19 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | Odkurzacz przemysłowy Invest Profus III - budowlany warsztatowy do pracy na sucho i mokro 1200W 10L | 18 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Meteor Admiral 1010 1020 1030 papierowe 5 szt. | 17 | 1.00 | 2.01 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Meteor 2 Cobra 2000 Explorer 1100 papierowe 6 szt. zamiennik | 17 | 0.50 | 1.06 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux S-BAG Airmax Expression Philips Mobilo papierowe | 16 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Amica Universis Beris Sumam Nortes papierowe 5 szt. | 15 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Elf 2 321 322 Elf Bonus Flip - 6 sztuk papierowe | 15 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Orion 1500 Twist Twister papierowe 5 szt. + filtry | 15 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Filtr ochrony silnika Parkside Niteo PNTS 1300 1500 | 13 | 2.00 | 3.91 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | Odkurzacz workowy Profi P6 | 13 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Elf 321 322 Elf Bonus Flip papierowe 5 szt. | 12 | 1.00 | 3.78 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza | 12 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY AMICA VM 1033 ORA | 10 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka welurowa do odkurzacza Electrolux, Philips - mała końcówka szczelinowa SM 0332 do tapicerki, mebli, zasłon | 10 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw ssawek naturalnym włosiem do paneli do odkurzacza Electrolux, Amica, Samsung, Philips typ IZ-SPE | 10 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY VM 1058 SURAZO | 9 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr | 9 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Wkłady do pochłaniacza wilgoci 250g uniwersalne - zestaw 10 szt. tabletki absorbujące | 9 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Wąż ssący do odkurzaczy Zelmer 1010.1100 (czarny) | 8 | 1.00 | 4.18 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Zelmer zestaw trzepaków do miksera 181 281 371 381 | 8 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw ssawek IZ-SPZ do paneli do odkurzaczy Zelmer | 7 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Thomas Aqua+ Pet & Family X7 X8 X10 XT syntetyczne 5 szt. | 7 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Cobra Explorer Meteor Wodnik 5szt | 7 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka 419 z naturalnym włosiem do odkurzacza Bosch, Karcher, Moulinex, Siemens | 6 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała 49.0003 do odkurzacza ZELMER | 6 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Turboszczotka uniwersalna z regulowaną średnicą 30-38mm | 5 | 1.00 | 51.09 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka do odkurzacza Zelmer duża podłogowa 32mm 23cm typ 49.1900 zamiennik (EAN 5905857142659) | 5 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux Mondo E44 E49 | 5 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do odkurzacza Zelmer 3000 5500 Magnat Solaris Jupiter 5szt | 5 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do KARCHER 6.904-333.0, T 9/1,T10/1, IZ-K16S 10 sztuk | 4 | 1.57 | 8.39 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka duża do odkurzacza Bosch Siemens Moulinex SE 0735 | 4 | 1.00 | 6.73 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Rura teleskopowa do odkurzacza Zelmer Electrolux 111.6000 | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała z welurem SM 0535 do odkurzacza Bosch,Siemens, Moulinex , Karcher | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała z włosiem do odkurzacza Zelmer | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Uniwersalny zestaw końcówek do odkurzaczy 4szt | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 5X Worki do odkurzacza Zelmer XS 01Z011 + filtry, IZ-XS2F | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Amica Ora VM1032-VM1035 12szt | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Karcher T 7/1 T 9/1 T 10/1 - papierowe 5 szt | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Elf 321 322 Flip 5 szt + filtry, papierowe, zamiennik IZ-3210080 | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne IZ-BAG05SPCZ do odkurzacza AMICA Surazo VM 1055, Ora VM 1032, SAMSUNG SC5480 SC5660, BEKO VCC 5325 AR, IZ-BAG05SPCZ 5szt | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr 5000.0050K HEPA 13 do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Clarris Twix, Magnat, Jupiter, Solaris, Sola | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Philips FC6409 FC6408 FC6170 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Mała ssawka z welurem SM35 do odkurzacza Bosch, Karcher, Profi, Miele, Moulinex, Samsung | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka duża do odkurzacza Electrolux, Philips; SE 0732 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka dwurzędowa 510 ze zgarniaczem śr. wew. 32mm do odkurzacza Electrolux, Philips | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała ze zgarniaczem do odkurzacza Electrolux, Philips SM 0232 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka 32 mm do odkurzacza Zelmer Aquawelt Aquario Aeromaster Jupiter Solaris SE14ZEL - końcówka ssąca 2w1 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Nóż nożyk dwustronny do maszynki Zelmer z komorą 5 - kod 86.1009 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 5 SZT WORKI DO LIDL PARKSIDE PNTS 1300 1400 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki ELECTROLUX E 44, E 49, Mondo, Mondo E 49, Mondo II, Mondo Z 1100 - 1199 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Samsung VP99; IZ-VP99 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do odkurzacza Zelmer Józek Kazio Kazik + filtr | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Komplet filtrów wlot i wylot do odkurzacza Electrolux Mondo; IZ-WWE3 | 2 | 1.00 | 70.26 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr EPA 12 2000.0050KU z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Magnat, Jupiter, Solaris | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr FK-03 do odkurzacza Karcher 2501, 2701, 2801, SE 2001, SE5.100, 2501 TE, A2701, 2801 plus, SE 3001, 2601, 2701 TE, A2801, 3001, SE6.100, 2601 pl | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr FK-10 do odkurzacza EINHELL: AFF 18, BT-VC 500 PARKSIDE: PAS 500A1, B1, C1, C2; PARK18/8C PARKSIDE 4711310437 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr HEPA 719.0150 do odkurzacza ZELMER 719 Wodnik Duo, 819 Aquario, Wodnik Duo Plus, 829 Aquos | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtry do odkurzacza FESTOOL CT, CTL, CTM 11, 22, 33, 44/45 Ventos 25/35, Karcher NT351, NT351/ECO, NT14/1; FK-17-2X | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Rura teleskopowa z tworzywa do odkurzaczy ZELMER; RTP 0132 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Rura teleskopowa z tworzywa średnica wewnętrzna 35 mm | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała z naturalnym włosiem do odkurzacza Electrolux, Philips typ 352 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka ze zgarniaczem typ 168 do odkurzacza ZELMER | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawkoszczotka przełączalna do odkurzaczy Zelmer 32mm | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Szczotka ssawka do paneli z naturalnym włosiem do odkurzacza Bosch, Karcher, Siemens, Rowenta, Profi - IZ-SPU | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw ssawek IZ-ZDZ do dywanów do odkurzaczy Zelmer | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Dzbanek filtrujący Aquaphor Jasper 2,8L + wkład maxfor+ | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Wąż dopływowy 1,0 do pralki / zmywarki - 1 m | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Wąż dopływowy 3,0 do pralki / zmywarki - 3 m | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 5X Worki do odkurzacza Zelmer 700, 701, Compact, IZ-700.0020 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 5X Worki papierowe do odkurzacza Zelmer Orion, Cobra II Silent 2500, Orion 1500, 1600, Twist, Twister | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux Cyclone Power Filio - papierowe 5 szt IZ-E13 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Parkside PNTS 1250 1300 1400 1500 - 5 szt + filtr (kompat. Niteo Tools IPX 4, Blaupunkt WD4000) IZ-IPX4 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Profi Europe Masterprofi Twist Profi 1 Profi 3 - 5 szt | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Edek - papierowe 5 szt | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do NILFISK 818460.00, GD 1000, GD 1000 SER, GD 1005, GD 1010, GDS 1010, HDS 1010, VP 100; IZ-NI3 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Duża ssawka 415 z naturalnym włosiem do odkurzacza Zelmer | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Karcher NT 65/2 Eco Tc, NT 65/2 Eco, NT 72/2 Eco Tc; FK-04 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Miele S4000 S5000 S6000 S8000; GA4007 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr piankowy SC47 do odkurzacza Samsung SC47J0, SC4320, SC4325,VCC4320S3B/XEO, VCC4325S3K/XEO, VCC4325S3R/XEO | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr zmywalny do odkurzacza Karcher WD 2, WD 3, NT/27, SE 4001, SE 4002, MV 2, MV3, K 2000; FK-02/P | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Mała ssawka z welurem do tapicerki śr. wew. 32 mm do odkurzacza Hoover, De Longhi, Privileg, Philips, Electrolux, Rowenta, SE 0932 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Mała ssawka z welurem do tapicerki śr. wew. 35 mm do odkurzacza Bosch, Karcher, Moulinex, Siemens, Amica, Samsung, Profi, SE 0935 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka duża 49 P z dwoma zgarniaczami typ 170 do odkurzacza ZELMER | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała 353 z naturalnym włosiem do odkurzacza Bosch, Siemens, Moulinex | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka okrągła z naturalnym włosiem 32 mm do odkurzaczy Zelmer , 047 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka szczelinowa do odkurzacza Electrolux, Philips | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka z włosem typ 800 do odkurzacza ZELMER | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka z naturalnym włosiem ELECTROLUX AEG PHILIPS KARCHER ZELMER | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Szczotka okrągła z włosem typ 046 do odkurzacza ZELMER | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Uniwersalne filtry do odkurzaczy wlot i wylot; IZ-WWU | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Wkład zapachowy do odkurzaczy (granulat) o zapachu morskim AROMA | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw akcesoriów do odkurzacza iRobot Roomba TS-75 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Butelka filtrująca Aquaphor City 500 ml granatowa + wkład | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Nożyk jednostronny do maszynki ZELMER z komorą 8; kod 86.3107 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Wkłady filtrujące do dzbanka Aquaphor Maxfor+ 3szt | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 5X WORKI KARCHER A2000 A2004 A2054 WD2 WD2.200 WD2.250 ZAMIENNIK | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 5X Worki papierowe do odkurzacza Zelmer 2000, Aquawelt, Aquos, Cobra, Meteor 2, Voyager | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 5X Worki syntetyczne do odkurzaczy ZELMER Magnat 3000, Jupiter 4000, Maxim, Solaris Twix | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worek płócienny Electrolux S-bag; IZ-E5/PH5WP | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki ELDOM OS 1200, HOLDEN Maximo OD 30, INVEST Galactico, Furio, MPM Focus, PHILIPS FC 8046, 8334, 8344, 8348; IZ-Y19 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki PHILIPS Athena Duathlon, HR6814-6855; IZ-PH6.1F | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do KARCHER WD2 PLUS WD3 SE4001 SE4002 IZ-K22SP PO | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Wetrok Monovac 6 Plus - 5 szt IZ-WK2 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzaczy Amica Nimis VM 1021, 1022, Qubis Base VJ 1031, 1032, Universis Base VK 1012, Universis VK 1011, Ventis VK 4021 IZ-AM2/AM3S | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio + filtr | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY INVEST GALACTICO 850 W | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY ZELMER TADEK ZVC261 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY AMICA VM 1033 ORA | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY INVEST GALACTICO 850 W | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY VM 1058 SURAZO | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY ZELMER TADEK ZVC261 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz przemysłowy Invest Profus III - budowlany warsztatowy do pracy na sucho i mokro 1200W 10L | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi 1.2 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi 1.2.1 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi 11.5 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi P6 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi P6 + 5x worki - zestaw | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | 1X Filtr do odkurzacza Dyson V11 SV14 V15 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr 5000.0050ZKU HEPA 13 z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Clarris Twix, Magnat, Jupiter | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr EPA 12 do odkurzacza ELECTROLUX Airmax, Clario, Ergo Space, Ultra Silencer, IZ-FHE1 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr HEPA 13 IZ-FHE2 do odkurzacza ELECTROLUX Airmax, Clario, Ergo Space, Ultra Silencer | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr HEPA oraz filtr stożkowy do odkurzaczy Dyson modeli DC58, DC59, DC61, DC62, V6 i V7 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr S Hepa IF-33 do odkurzacza Invest FURIO, FURIO ECO | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr S Hepa IG-03 do odkurzacza Invest GALACTICO | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Karcher NT 35/1 Eco/Te/M, NT 45/1 Eco/Te/M, NT 55/1 Eco/Te/M; FK-01 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Profi 3; FK-21 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Rowenta Silence Force , Silence Force Compact, Silence Force, Extreme, Silence Force Extreme Compact, ZR002901 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzaczy Kärcher WD4, WD5, WD 4.200 - WD 4.500, 6.414-960.0 OKRĄGŁY - FK-454 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr piankowy I typ 919.0087 do odkurzaczy Zelmer Aquos 829, Aquawelt 919 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr piankowy typ SC43 do odkurzacza Samsung SC43 VC43 VCC43 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr powietrza wstępny 719.0060 do odkurzacza ZELMER 719 Wodnik Duo, Wodnik Duo Plus 819 Aquario | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr wlotowy 601201.4070 do odkurzacza Zelmer Voyager Twix | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | PHILIPS SpeedPro Max FC5005 FC6802 FILTR | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Płyn czyszczący do odkurzaczy piorących PL.D | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | SSAWKA SZCZELINOWA DO ODKURZACZY KARCHER BOSCH SAMSUNG ROWENTA | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka 3w1 do odkurzaczy Zelmer - 32 mm typ 354 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka 418 z syntetycznym włosiem do odkurzacza Bosch, Karcher, Moulinex, Siemens | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka 800 z dwoma zgarniaczami typ 218 do odkurzacza ZELMER | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka okrągła z naturalnym włosiem 32 mm do odkurzaczy Electrolux, 049 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka okrągła z naturalnym włosiem 35 mm do odkurzaczy Bosch | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka szczelinowa długa typ 056 do odkurzacza ZELMER | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka szczelinowa giętka do odkurzacza Zelmer | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka z włosem typ 1020 do odkurzacza ZELMER | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka średnia gładka 084 do odkurzacza ZELMER | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka SE1432 do odkurzaczy Electrolux... | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka SE1435 do odkurzaczy Bosch, Panasonic, Siemens... | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka SE1635 do odkurzaczy Bosch, Samsung, LG... | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka z naturalnym włosiem do odkurzaczy ELECTROLUX AEG PHILIPS DN32; 050-003 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawkoszczotka na kółkach do odkurzacza ZELMER; 449.0000P | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Szczotka parkietowa na kółkach do odkurzaczy ZELMER (czarna) 49.9500P | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Uniwersalny zestaw końcówek do odkurzaczy 4szt + Worek na akcesoria | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Worki do odkurzaczy DUO 01D011, 01D012; IZ-D011 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Wąż ssący do odkurzaczy Zelmer 321.0110 (czarny) | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw filtrów GA3833 do odkurzacza PHILIPS FC 8058/01, PowerPro Active FC 8630 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw ssawek IZ-ZDE do dywanów i wykładzin do odkurzacza Electrolux, Philips, Amica | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw ssawek IZ-ZDK do dywanów i wykładzin do odkurzacza Karcher, Bosch, Siemens, Profi, Rowenta | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Filtr węglowy do okapów kuchennych IZ-FW2 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Nożyk do maszynki do mięsa Zelmer komora 5 - 86.1007 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Sitko o średnicy otworów 8 mm do maszynki ZELMER z komorą 5 sitko 86.1242 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | UNIWERSALNY WKŁAD DO POCHŁANIACZA WILGOCI 250G | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Wkład do butelki filtrującej Aquaphor City | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | SZCZOTKA KOŃCÓWKA DO PAROWNICY KARCHER SC SC1 SC2 SC3 SC4 SC5 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki PANASONIC AMC 8 F01 T 1000, C 20E, MC-E 761; IZ-PC5 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Blaupunkt VCB201 Bomann BS9010 BS9011 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Magnat 3000 5500 Solaris Jupiter papierowe 6 szt. | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Sławek ZVC 361 ZVC 362 5sztuk | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do MIELE Aquamarin, Automatic, Senator LX; IZ-M1/M4 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do Rowenta BP 61 Enduro, Bully, RB 50 - RB 52, RB 500; IZ-R4 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do odkurzaczy SAMSUNG Easy RC 999, VP-95B; IZ-FA6 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne do ROWENTA Silence Force, X-Treme Power; IZ-R16S | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne do ZELMER Multipro 01Z013 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne do odkurzacza AMICA Surazo VM 1055, Ora VM 1032, SAMSUNG SC5480 SC5660, BEKO VCC 5325 AR, IZ-BAG05SPCZ 4szt | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
## Reguly z bazy wiedzy
| ID | Temat | Rekomendacja | Ryzyko |
| --- | --- | --- | --- |
| smart_bidding_sequential_budget_and_target_changes | strategie_stawek | Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana. | Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji. |
## Poza zakresem tego zadania
- Performance Max
- Search
- kampanie Shopping bez grup reklam
- automatyczne wdrozenie bez akceptacji uzytkownika
- pauzowanie grup reklam z niskim albo zerowym ROAS

View File

@@ -0,0 +1,179 @@
{
"created_at": "2026-05-15T20:37:41+02:00",
"client": "investagd.pl",
"task": "fill_product_unit_pricing",
"task_name": "Uzupelnienie unit pricing",
"products": [
{
"product_id": 24251,
"offer_id": "387",
"default_name": "Zelmer zestaw trzepaków do miksera ręcznego do modeli 181, 281, 371, 381",
"custom_title": "Trzepaki do miksera Zelmer 371K - komplet do robotów 181, 281, 371, 381",
"google_product_category": "Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do mikserów i blenderów",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 207,
"clicks_all_time": 596
},
{
"product_id": 24276,
"offer_id": "397",
"default_name": "Zelmer sprzęgło napędowe ślimaka 86.1203 do maszynki do mielenia mięsa",
"custom_title": "Sprzęgło ślimaka Zelmer 86.1203 do maszynki do mięsa - zamiennik do wszystkich modeli",
"google_product_category": "Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do rozdrabniaczy do żywności",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 41,
"clicks_all_time": 126
},
{
"product_id": 24182,
"offer_id": "16",
"default_name": "Worki ELECTROLUX E 44, E 49, Mondo E 49, Mondo II, Mondo Z 1100 - 1199 + filtry; IZ-E3F",
"custom_title": "Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe + filtry",
"google_product_category": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 61,
"clicks_all_time": 124
},
{
"product_id": 24051,
"offer_id": "27",
"default_name": "Worki uniwersalne z uchwytem do wycinania Typ 1010 + filtr; IZ-BAG01F",
"custom_title": "worki do odkurzacza uniwersalne z uchwytem do wycinania + filtr, Typ 1010, pasują do wielu modeli odkurzaczy workowych (5 szt.) IZ-BAG01F",
"google_product_category": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 81,
"clicks_all_time": 118
},
{
"product_id": 24354,
"offer_id": "1041",
"default_name": "Odkurzacz workowy Profi 1.2.1",
"custom_title": "",
"google_product_category": "",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 112,
"clicks_all_time": 113
},
{
"product_id": 24047,
"offer_id": "871",
"default_name": "5 SZT WORKI DO LIDL PARKSIDE PNTS 1300 1400 IZ-L4S",
"custom_title": "Worki do odkurzacza Parkside PNTS 1300 1400 syntetyczne 5 szt. - zamiennik Lidl Einhell",
"google_product_category": "4537",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 7,
"clicks_all_time": 112
},
{
"product_id": 24069,
"offer_id": "5",
"default_name": "5X Worki papierowe do odkurzacza Zelmer Meteor 2, Cobra 2000, 2010 + filtry IZ-2000.0280",
"custom_title": "Worki do odkurzacza Zelmer Meteor 2 Cobra 2000 2010 - 5 szt papierowe + filtry",
"google_product_category": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 49,
"clicks_all_time": 110
},
{
"product_id": 24177,
"offer_id": "1090",
"default_name": "Worki papierowe do odkurzacza Zelmer 6 sztuk do Cobra 2000, Explorer 1100, Meteor 2",
"custom_title": "Worki do odkurzacza Zelmer Meteor 2 Cobra 2000 Explorer 1100 papierowe 6 szt. zamiennik",
"google_product_category": "4537",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 32,
"clicks_all_time": 109
},
{
"product_id": 24046,
"offer_id": "808",
"default_name": "Ssawka do odkurzacza mała z welurem 32 mm zamiennik do Zelmer",
"custom_title": "Ssawka do odkurzacza Zelmer z welurem 32mm - mała ssawka do mebli i tapicerki",
"google_product_category": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 25,
"clicks_all_time": 94
},
{
"product_id": 24120,
"offer_id": "10",
"default_name": "5X Worki do odkurzacza Zelmer Elf 321, 322, Elf Bonus, Flip, IZ-321.0081",
"custom_title": "Worki do odkurzacza Zelmer Elf 321 322 Elf Bonus Flip papierowe 5 szt.",
"google_product_category": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 47,
"clicks_all_time": 93
}
],
"title_changes": [],
"category_changes": [],
"unit_pricing_changes": [
{
"offer_id": "871",
"field": "unit_pricing",
"title": "5 SZT WORKI DO LIDL PARKSIDE PNTS 1300 1400 IZ-L4S",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "5 szt",
"unit_pricing_base_measure": "1 szt",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
},
{
"offer_id": "1090",
"field": "unit_pricing",
"title": "Worki papierowe do odkurzacza Zelmer 6 sztuk do Cobra 2000, Explorer 1100, Meteor 2",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "6 szt",
"unit_pricing_base_measure": "1 szt",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
}
],
"skipped": [
{
"offer_id": "387",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "397",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "16",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "27",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "1041",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "5",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "808",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "10",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
}
],
"warnings": [
"Unit pricing zostanie zapisany w adsPRO dopiero po akceptacji planu."
]
}

View File

@@ -0,0 +1,36 @@
# Plan: Uzupelnienie unit pricing
Klient: investagd.pl
Utworzono: 2026-05-15T20:37:41+02:00
## Podsumowanie
- Produkty z adsPRO: 10
- Tytuly do zmiany: 0
- Kategorie do uzupelnienia: 0
- Unit pricing do zmiany: 2
- Pominiete: 8
## Uwagi
- Unit pricing zostanie zapisany w adsPRO dopiero po akceptacji planu.
## Unit pricing do zmiany
| Produkt | Measure | Base measure | Powod |
| --- | --- | --- | --- |
| 871 | 5 szt | 1 szt | brak unit pricing; wartosc wyliczona z nazwy produktu |
| 1090 | 6 szt | 1 szt | brak unit pricing; wartosc wyliczona z nazwy produktu |
## Pominiete
| Produkt | Powod |
| --- | --- |
| 387 | brak jednoznacznego unit pricing w nazwie produktu |
| 397 | brak jednoznacznego unit pricing w nazwie produktu |
| 16 | brak jednoznacznego unit pricing w nazwie produktu |
| 27 | brak jednoznacznego unit pricing w nazwie produktu |
| 1041 | brak jednoznacznego unit pricing w nazwie produktu |
| 5 | brak jednoznacznego unit pricing w nazwie produktu |
| 808 | brak jednoznacznego unit pricing w nazwie produktu |
| 10 | brak jednoznacznego unit pricing w nazwie produktu |

View File

@@ -0,0 +1,216 @@
{
"created_at": "2026-05-15T20:37:41+02:00",
"client": "investagd.pl",
"task": "optimize_product_categories",
"task_name": "Optymalizacja kategorii Google",
"products": [
{
"offer_id": "1041",
"default_name": "Odkurzacz workowy Profi 1.2.1",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 113,
"impressions": 4813,
"cost": 183.32
},
{
"offer_id": "569",
"default_name": "Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny)",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 46,
"impressions": 1716,
"cost": 43.43
},
{
"offer_id": "1068",
"default_name": "ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 44,
"impressions": 2360,
"cost": 67.09
},
{
"offer_id": "1045",
"default_name": "Odkurzacz workowy Profi 11.5",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 43,
"impressions": 4511,
"cost": 74.34
},
{
"offer_id": "666",
"default_name": "Wąż dopływowy 3,0 do pralki / zmywarki - 3 m",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 38,
"impressions": 1268,
"cost": 16.39
},
{
"offer_id": "835",
"default_name": "Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 37,
"impressions": 1345,
"cost": 24.18
},
{
"offer_id": "178",
"default_name": "Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 36,
"impressions": 1551,
"cost": 41.07
},
{
"offer_id": "729",
"default_name": "Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 36,
"impressions": 935,
"cost": 30.6
},
{
"offer_id": "323",
"default_name": "Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 34,
"impressions": 2299,
"cost": 21.22
},
{
"offer_id": "1083",
"default_name": "4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 33,
"impressions": 1357,
"cost": 41.25
}
],
"title_changes": [],
"category_changes": [
{
"offer_id": "1041",
"field": "google_product_category",
"current_value": "",
"target_value": "",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "569",
"field": "google_product_category",
"current_value": "",
"target_value": "",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1068",
"field": "google_product_category",
"current_value": "",
"target_value": "",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1045",
"field": "google_product_category",
"current_value": "",
"target_value": "",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "666",
"field": "google_product_category",
"current_value": "",
"target_value": "",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "835",
"field": "google_product_category",
"current_value": "",
"target_value": "",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "178",
"field": "google_product_category",
"current_value": "",
"target_value": "",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "729",
"field": "google_product_category",
"current_value": "",
"target_value": "",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "323",
"field": "google_product_category",
"current_value": "",
"target_value": "",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1083",
"field": "google_product_category",
"current_value": "",
"target_value": "",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
}
],
"unit_pricing_changes": [],
"skipped": [],
"warnings": [
"Kategorie Google wybiera agent AI; skrypt nie zgaduje ich automatycznie."
]
}

View File

@@ -0,0 +1,31 @@
# Plan: Optymalizacja kategorii Google
Klient: investagd.pl
Utworzono: 2026-05-15T20:37:41+02:00
## Podsumowanie
- Produkty z adsPRO: 10
- Tytuly do zmiany: 0
- Kategorie do uzupelnienia: 10
- Unit pricing do zmiany: 0
- Pominiete: 0
## Uwagi
- Kategorie Google wybiera agent AI; skrypt nie zgaduje ich automatycznie.
## Kategorie Google do decyzji agenta AI
| Produkt | Obecnie | Decyzja agenta AI | Powod |
| --- | --- | --- | --- |
| 1041 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 569 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 1068 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 1045 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 666 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 835 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 178 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 729 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 323 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 1083 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
# Plan: Sprawdzenie dostepnosci produktow
Klient: investagd.pl
Utworzono: 2026-05-15T20:38:55+02:00
## Podsumowanie
- Produkty sprawdzone: 448
- Dostepne: 306
- Niedostepne reklamowo: 138
- Niedopasowane: 4
- Do ustawienia CL4=paused: 1
## Uwagi
- Produkty niedopasowane albo bez jednoznacznego odczytu: 4.
- Produkty niedostepne reklamowo: 138.
## Zmiany do wdrozenia
| Produkt | Obecne CL4 | Docelowe CL4 | Powod | URL |
| --- | --- | --- | --- | --- |
| 1097 | | paused | brak aktywnego przycisku Dodaj do koszyka | https://www.investagd.pl/x-p-1097.html |

View File

@@ -0,0 +1,315 @@
{
"created_at": "2026-05-15T20:38:57+02:00",
"client": "investagd.pl",
"task": "check_budget_usage",
"task_name": "Sprawdzenie wykorzystania budzetu",
"currency_code": "PLN",
"campaigns": [
{
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15557732820",
"budget_name": "[PLA_CL1] pozostale",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 15000000,
"expected_7d_micros": 105000000,
"cost_7d_micros": 131570000,
"avg_daily_cost_micros": 18795714,
"usage_percent": 125.3,
"pacing_label": "blisko limitu",
"conversions": 6.0,
"conversions_value": 206.84,
"roas": 1.57,
"search_impression_share": 0.4117296222664016,
"search_budget_lost_impression_share": 0.5882703777335984,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "srednie",
"action": "sprawdz mozliwosc podniesienia budżetu",
"reason": "kampania wykorzystuje budzet i traci czesc wyswietlen przez budzet",
"suggested_budget_change_percent": 30,
"current_daily_budget_micros": 15000000,
"recommended_daily_budget_micros": 19500000,
"budget_delta_micros": 4500000,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15548480095",
"budget_name": "[PLA_CL1] odkurzacze_akcesoria",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 15000000,
"expected_7d_micros": 105000000,
"cost_7d_micros": 119230000,
"avg_daily_cost_micros": 17032857,
"usage_percent": 113.6,
"pacing_label": "blisko limitu",
"conversions": 4.0,
"conversions_value": 189.49,
"roas": 1.59,
"search_impression_share": 0.5420177636073787,
"search_budget_lost_impression_share": 0.45798223639262126,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "srednie",
"action": "sprawdz mozliwosc podniesienia budżetu",
"reason": "kampania wykorzystuje budzet i traci czesc wyswietlen przez budzet",
"suggested_budget_change_percent": 25,
"current_daily_budget_micros": 15000000,
"recommended_daily_budget_micros": 18750000,
"budget_delta_micros": 3750000,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15543226950",
"budget_name": "[PLA_CL1] odkurzacze",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 60000000,
"expected_7d_micros": 420000000,
"cost_7d_micros": 412370000,
"avg_daily_cost_micros": 58910000,
"usage_percent": 98.2,
"pacing_label": "blisko limitu",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0.0,
"search_impression_share": 0.5640596682001952,
"search_budget_lost_impression_share": 0.43594033179980485,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "ostroznie",
"action": "nie podnoś budżetu bez oceny rentowności",
"reason": "widac utrate przez budzet, ale brakuje wystarczajacej wartosci konwersji",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 60000000,
"recommended_daily_budget_micros": 60000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15557730201",
"budget_name": "[PLA_CL1] worki",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 40000000,
"expected_7d_micros": 280000000,
"cost_7d_micros": 229520000,
"avg_daily_cost_micros": 32788571,
"usage_percent": 82.0,
"pacing_label": "w normie",
"conversions": 5.07,
"conversions_value": 319.79,
"roas": 1.39,
"search_impression_share": 0.5347182697780307,
"search_budget_lost_impression_share": 0.4652817302219693,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "ok",
"action": "bez zmiany budzetu",
"reason": "brak jednoczesnego sygnalu wysokiego wykorzystania i utraty przez budzet",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 40000000,
"recommended_daily_budget_micros": 40000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23836770153",
"campaign_name": "[PLA] catch-all",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15578507680",
"budget_name": "[PLA] catch-all",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 10000000,
"expected_7d_micros": 70000000,
"cost_7d_micros": 36670000,
"avg_daily_cost_micros": 5238571,
"usage_percent": 52.4,
"pacing_label": "w normie",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0.0,
"search_impression_share": 0.4660633484162896,
"search_budget_lost_impression_share": 0.5339366515837104,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "ok",
"action": "bez zmiany budzetu",
"reason": "brak jednoczesnego sygnalu wysokiego wykorzystania i utraty przez budzet",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 10000000,
"recommended_daily_budget_micros": 10000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "22934868198",
"campaign_name": "[Search] brand",
"status": "ENABLED",
"channel_type": "SEARCH",
"budget_id": "14870361809",
"budget_name": "[Search] brand",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 30000000,
"expected_7d_micros": 210000000,
"cost_7d_micros": 48599836,
"avg_daily_cost_micros": 6942833,
"usage_percent": 23.1,
"pacing_label": "niskie wykorzystanie",
"conversions": 3.0,
"conversions_value": 236.95,
"roas": 4.88,
"search_impression_share": 0.5238095238095238,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.47619047619047616,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "ok",
"action": "bez zmiany budzetu",
"reason": "brak jednoczesnego sygnalu wysokiego wykorzystania i utraty przez budzet",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 30000000,
"recommended_daily_budget_micros": 30000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15575442944",
"budget_name": "[PLA_CL1] czajniki",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 20000000,
"expected_7d_micros": 140000000,
"cost_7d_micros": 0,
"avg_daily_cost_micros": 0,
"usage_percent": 0.0,
"pacing_label": "brak wydatkow",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0,
"search_impression_share": 0.0,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "do sprawdzenia",
"action": "sprawdz brak wydatkow",
"reason": "aktywna kampania nie wydala srodkow w ostatnich 7 dniach",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 20000000,
"recommended_daily_budget_micros": 20000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15580076781",
"budget_name": "[PLA_CL1] odkurzacze | catch_all",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 10000,
"expected_7d_micros": 70000,
"cost_7d_micros": 0,
"avg_daily_cost_micros": 0,
"usage_percent": 0.0,
"pacing_label": "brak wydatkow",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0,
"search_impression_share": 0.0,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "do sprawdzenia",
"action": "sprawdz brak wydatkow",
"reason": "aktywna kampania nie wydala srodkow w ostatnich 7 dniach",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 10000,
"recommended_daily_budget_micros": 10000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
}
],
"scope": [
{
"area": "Wydatki 7 dni",
"check": "Porownaj koszt z ostatnich 7 dni z oczekiwanym wydatkiem wynikajacym z budzetu dziennego."
},
{
"area": "Pacing",
"check": "Oznacz kampanie, ktore wydaja bardzo malo albo prawie caly tygodniowy limit budzetu."
},
{
"area": "Utrata wyswietlania przez budzet",
"check": "Polacz wykorzystanie budzetu z utrata udzialu w wyswietleniach przez budzet i rentownoscia kampanii."
},
{
"area": "Brak wydatkow",
"check": "Wskaz aktywne kampanie z budzetem, ktore nie wydaly srodkow w ostatnich 7 dniach."
},
{
"area": "Budzet wspoldzielony",
"check": "Pokaz nazwe budzetu, zeby latwiej wychwycic kampanie korzystajace z tego samego budzetu."
}
],
"out_of_scope": [
"zmiany stawek i strategii ustalania stawek",
"ocena Docelowego ROAS albo Docelowego CPA",
"analiza zapytan, wykluczen i jakosci ruchu",
"wdrazanie zmian budzetowych na koncie"
],
"knowledge_rules": [
{
"id": "smart_bidding_sequential_budget_and_target_changes",
"topic": "strategie_stawek",
"rule_type": "warning",
"condition": "Plan zaklada zmiane budzetu albo celu Smart Bidding, szczegolnie gdy zmiana jest duza albo nastepuje krotko po innej zmianie budzetu, strategii lub celu.",
"recommendation": "Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana.",
"risk": "Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji.",
"source": "manual"
}
],
"warnings": [],
"budget_changes": [],
"changes": []
}

View File

@@ -0,0 +1,57 @@
# Plan: Sprawdzenie wykorzystania budzetu
Klient: investagd.pl
Utworzono: 2026-05-15T20:38:57+02:00
## Podsumowanie
- Kampanie aktywne z danymi 7 dni: 8
- Reguly wiedzy przypisane do zadania: 1
- Rekomendacje budzetowe do decyzji: 5
- Zmiany budzetu do wdrozenia: 0
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Wydatki 7 dni | Porownaj koszt z ostatnich 7 dni z oczekiwanym wydatkiem wynikajacym z budzetu dziennego. |
| Pacing | Oznacz kampanie, ktore wydaja bardzo malo albo prawie caly tygodniowy limit budzetu. |
| Utrata wyswietlania przez budzet | Polacz wykorzystanie budzetu z utrata udzialu w wyswietleniach przez budzet i rentownoscia kampanii. |
| Brak wydatkow | Wskaz aktywne kampanie z budzetem, ktore nie wydaly srodkow w ostatnich 7 dniach. |
| Budzet wspoldzielony | Pokaz nazwe budzetu, zeby latwiej wychwycic kampanie korzystajace z tego samego budzetu. |
## Poza zakresem tego zadania
- zmiany stawek i strategii ustalania stawek
- ocena Docelowego ROAS albo Docelowego CPA
- analiza zapytan, wykluczen i jakosci ruchu
- wdrazanie zmian budzetowych na koncie
## Wykorzystanie budzetu z ostatnich 7 dni
| Kampania | Typ | Budzet dzienny | Koszt 7 dni | Uzycie 7 dni | Utrata przez budzet | ROAS | Status | Ost. zmiana budzetu | Budzet |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [PLA_CL1] pozostale | SHOPPING | 15.00 PLN | 131.57 PLN | 125.3% | 58.83% | 1.57 | blisko limitu | brak danych | [PLA_CL1] pozostale |
| [PLA_CL1] odkurzacze_akcesoria | SHOPPING | 15.00 PLN | 119.23 PLN | 113.6% | 45.80% | 1.59 | blisko limitu | brak danych | [PLA_CL1] odkurzacze_akcesoria |
| [PLA_CL1] odkurzacze | SHOPPING | 60.00 PLN | 412.37 PLN | 98.2% | 43.59% | - | blisko limitu | brak danych | [PLA_CL1] odkurzacze |
| [PLA_CL1] worki | SHOPPING | 40.00 PLN | 229.52 PLN | 82.0% | 46.53% | 1.39 | w normie | brak danych | [PLA_CL1] worki |
| [PLA] catch-all | SHOPPING | 10.00 PLN | 36.67 PLN | 52.4% | 53.39% | - | w normie | brak danych | [PLA] catch-all |
| [Search] brand | SEARCH | 30.00 PLN | 48.60 PLN | 23.1% | 0.00% | 4.88 | niskie wykorzystanie | brak danych | [Search] brand |
| [PLA_CL1] czajniki | SHOPPING | 20.00 PLN | 0.00 PLN | 0.0% | 0.00% | - | brak wydatkow | brak danych | [PLA_CL1] czajniki |
| [PLA_CL1] odkurzacze | catch_all | SHOPPING | 0.01 PLN | 0.00 PLN | 0.0% | 0.00% | - | brak wydatkow | brak danych | [PLA_CL1] odkurzacze | catch_all |
## Rekomendacje budzetowe do decyzji
| Kampania | Waznosc | Obecnie | Propozycja | Zmiana | Powod |
| --- | --- | --- | --- | --- | --- |
| [PLA_CL1] pozostale | srednie | 15.00 PLN | 19.50 PLN | +30% (4.50 PLN) | kampania wykorzystuje budzet i traci czesc wyswietlen przez budzet |
| [PLA_CL1] odkurzacze_akcesoria | srednie | 15.00 PLN | 18.75 PLN | +25% (3.75 PLN) | kampania wykorzystuje budzet i traci czesc wyswietlen przez budzet |
| [PLA_CL1] odkurzacze | ostroznie | 60.00 PLN | 60.00 PLN | +0% (0.00 PLN) | widac utrate przez budzet, ale brakuje wystarczajacej wartosci konwersji |
| [PLA_CL1] czajniki | do sprawdzenia | 20.00 PLN | 20.00 PLN | +0% (0.00 PLN) | aktywna kampania nie wydala srodkow w ostatnich 7 dniach |
| [PLA_CL1] odkurzacze | catch_all | do sprawdzenia | 0.01 PLN | 0.01 PLN | +0% (0.00 PLN) | aktywna kampania nie wydala srodkow w ostatnich 7 dniach |
## Reguly z bazy wiedzy
| ID | Temat | Rekomendacja | Ryzyko |
| --- | --- | --- | --- |
| smart_bidding_sequential_budget_and_target_changes | strategie_stawek | Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana. | Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji. |

View File

@@ -0,0 +1,358 @@
{
"created_at": "2026-05-15T20:38:59+02:00",
"client": "investagd.pl",
"task": "check_bidding_strategies",
"task_name": "Sprawdzenie strategii stawek",
"currency_code": "PLN",
"campaigns": [
{
"campaign_id": "23836770153",
"campaign_name": "[PLA] catch-all",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_SPEND",
"bidding_strategy_resource": "",
"budget_id": "15578507680",
"budget_name": "[PLA] catch-all",
"daily_budget_micros": 10000000,
"cost_30d_micros": 36670000,
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"search_impression_share": 0.4660633484162896,
"search_budget_lost_impression_share": 0.5339366515837104,
"search_rank_lost_impression_share": 0.0,
"budget_usage_percent": 12.2,
"actual_roas": 0.0,
"target_cpa_micros": 0,
"target_roas": 0.0,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "brak jawnego celu",
"risk_label": "brak konwersji w 30 dni",
"target_assessment": "brak jawnego celu do oceny",
"stability_label": "niestabilne: brak konwersji",
"budget_context": "mocne ograniczenie budzetem",
"strategy_fit": "do oceny recznej",
"bidding_recommendation": {
"level": "czekaj",
"action": "najpierw rozwiaz ograniczenie budzetem",
"reason": "zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji"
}
},
{
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_ROAS",
"bidding_strategy_resource": "",
"budget_id": "15543226950",
"budget_name": "[PLA_CL1] odkurzacze",
"daily_budget_micros": 60000000,
"cost_30d_micros": 587350000,
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"search_impression_share": 0.6058726620796588,
"search_budget_lost_impression_share": 0.3862777400910941,
"search_rank_lost_impression_share": 0.00784959782924702,
"budget_usage_percent": 32.6,
"actual_roas": 0.0,
"target_cpa_micros": 0,
"target_roas": 0.5,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "Docelowy ROAS 50%",
"risk_label": "brak konwersji w 30 dni",
"target_assessment": "brak jawnego celu do oceny",
"stability_label": "niestabilne: brak konwersji",
"budget_context": "mocne ograniczenie budzetem",
"strategy_fit": "ryzykowne: za malo konwersji dla strategii wartosci",
"bidding_recommendation": {
"level": "czekaj",
"action": "najpierw rozwiaz ograniczenie budzetem",
"reason": "zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji"
}
},
{
"campaign_id": "22934868198",
"campaign_name": "[Search] brand",
"status": "ENABLED",
"channel_type": "SEARCH",
"bidding_strategy_type": "TARGET_IMPRESSION_SHARE",
"bidding_strategy_resource": "",
"budget_id": "14870361809",
"budget_name": "[Search] brand",
"daily_budget_micros": 30000000,
"cost_30d_micros": 290500290,
"conversions_30d": 3.0,
"conversion_value_30d": 236.95,
"search_impression_share": 0.24447663889894966,
"search_budget_lost_impression_share": 0.23180007243752263,
"search_rank_lost_impression_share": 0.5237232886635277,
"budget_usage_percent": 32.3,
"actual_roas": 0.82,
"target_cpa_micros": 0,
"target_roas": 0.0,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "brak jawnego celu",
"risk_label": "dane do oceny",
"target_assessment": "brak jawnego celu do oceny",
"stability_label": "niestabilne: malo konwersji",
"budget_context": "ograniczenie budzetem do oceny",
"strategy_fit": "pasuje do kampanii brand/search, nie optymalizuje bezposrednio wartosci konwersji",
"bidding_recommendation": {
"level": "czekaj",
"action": "najpierw rozwiaz ograniczenie budzetem",
"reason": "zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji"
}
},
{
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_ROAS",
"bidding_strategy_resource": "",
"budget_id": "15548480095",
"budget_name": "[PLA_CL1] odkurzacze_akcesoria",
"daily_budget_micros": 15000000,
"cost_30d_micros": 190360000,
"conversions_30d": 6.0,
"conversion_value_30d": 260.79,
"search_impression_share": 0.5483340803824892,
"search_budget_lost_impression_share": 0.4196922157477962,
"search_rank_lost_impression_share": 0.031973703869714626,
"budget_usage_percent": 42.3,
"actual_roas": 1.37,
"target_cpa_micros": 0,
"target_roas": 0.5,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "Docelowy ROAS 50%",
"risk_label": "malo konwersji dla automatyzacji",
"target_assessment": "za malo danych do oceny celu ROAS",
"stability_label": "niestabilne: malo konwersji",
"budget_context": "mocne ograniczenie budzetem",
"strategy_fit": "ryzykowne: za malo konwersji dla strategii wartosci",
"bidding_recommendation": {
"level": "czekaj",
"action": "najpierw rozwiaz ograniczenie budzetem",
"reason": "zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji"
}
},
{
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_ROAS",
"bidding_strategy_resource": "",
"budget_id": "15557732820",
"budget_name": "[PLA_CL1] pozostale",
"daily_budget_micros": 15000000,
"cost_30d_micros": 181060000,
"conversions_30d": 6.0,
"conversion_value_30d": 206.84,
"search_impression_share": 0.45533376963350786,
"search_budget_lost_impression_share": 0.5445026178010471,
"search_rank_lost_impression_share": 0.0001636125654450262,
"budget_usage_percent": 40.2,
"actual_roas": 1.14,
"target_cpa_micros": 0,
"target_roas": 0.5,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "Docelowy ROAS 50%",
"risk_label": "malo konwersji dla automatyzacji",
"target_assessment": "za malo danych do oceny celu ROAS",
"stability_label": "niestabilne: malo konwersji",
"budget_context": "mocne ograniczenie budzetem",
"strategy_fit": "ryzykowne: za malo konwersji dla strategii wartosci",
"bidding_recommendation": {
"level": "czekaj",
"action": "najpierw rozwiaz ograniczenie budzetem",
"reason": "zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji"
}
},
{
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_ROAS",
"bidding_strategy_resource": "",
"budget_id": "15557730201",
"budget_name": "[PLA_CL1] worki",
"daily_budget_micros": 40000000,
"cost_30d_micros": 297180000,
"conversions_30d": 8.300191,
"conversion_value_30d": 462.66706218,
"search_impression_share": 0.5254373617534688,
"search_budget_lost_impression_share": 0.47355720892821235,
"search_rank_lost_impression_share": 0.0010054293183189222,
"budget_usage_percent": 24.8,
"actual_roas": 1.56,
"target_cpa_micros": 0,
"target_roas": 0.5,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "Docelowy ROAS 50%",
"risk_label": "malo konwersji dla automatyzacji",
"target_assessment": "za malo danych do oceny celu ROAS",
"stability_label": "niestabilne: malo konwersji",
"budget_context": "mocne ograniczenie budzetem",
"strategy_fit": "ryzykowne: za malo konwersji dla strategii wartosci",
"bidding_recommendation": {
"level": "czekaj",
"action": "najpierw rozwiaz ograniczenie budzetem",
"reason": "zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji"
}
},
{
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_ROAS",
"bidding_strategy_resource": "",
"budget_id": "15575442944",
"budget_name": "[PLA_CL1] czajniki",
"daily_budget_micros": 20000000,
"cost_30d_micros": 0,
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"search_impression_share": 0.0,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.0,
"budget_usage_percent": 0.0,
"actual_roas": 0.0,
"target_cpa_micros": 0,
"target_roas": 0.5,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "Docelowy ROAS 50%",
"risk_label": "brak konwersji w 30 dni",
"target_assessment": "brak jawnego celu do oceny",
"stability_label": "niestabilne: brak konwersji",
"budget_context": "brak silnego sygnalu budzetowego",
"strategy_fit": "ryzykowne: za malo konwersji dla strategii wartosci",
"bidding_recommendation": {
"level": "ostroznie",
"action": "nie zmieniaj strategii",
"reason": "niestabilne: brak konwersji"
}
},
{
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"status": "ENABLED",
"channel_type": "SHOPPING",
"bidding_strategy_type": "TARGET_ROAS",
"bidding_strategy_resource": "",
"budget_id": "15580076781",
"budget_name": "[PLA_CL1] odkurzacze | catch_all",
"daily_budget_micros": 10000,
"cost_30d_micros": 0,
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"search_impression_share": 0.0,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.0,
"budget_usage_percent": 0.0,
"actual_roas": 0.0,
"target_cpa_micros": 0,
"target_roas": 0.5,
"maximize_conversions_target_cpa_micros": 0,
"maximize_conversion_value_target_roas": 0.0,
"target_label": "Docelowy ROAS 50%",
"risk_label": "brak konwersji w 30 dni",
"target_assessment": "brak jawnego celu do oceny",
"stability_label": "niestabilne: brak konwersji",
"budget_context": "brak silnego sygnalu budzetowego",
"strategy_fit": "ryzykowne: za malo konwersji dla strategii wartosci",
"bidding_recommendation": {
"level": "ostroznie",
"action": "nie zmieniaj strategii",
"reason": "niestabilne: brak konwersji"
}
}
],
"scope": [
{
"area": "Typ strategii",
"check": "Pokaz typ strategii ustalania stawek dla aktywnych kampanii."
},
{
"area": "Cele strategii",
"check": "Pokaz aktualny Docelowy ROAS albo Docelowy CPA, jezeli kampania go uzywa."
},
{
"area": "Wolumen konwersji",
"check": "Sprawdz liczbe konwersji z ostatnich 30 dni jako kontekst dla automatycznych strategii."
},
{
"area": "Stabilnosc decyzji",
"check": "Oznacz kampanie, gdzie malo danych zwieksza ryzyko pochopnej zmiany strategii albo celu."
},
{
"area": "Ocena celu",
"check": "Porownaj rzeczywisty ROAS/CPA z aktualnym celem i oznacz cele zbyt niskie albo zbyt wysokie."
},
{
"area": "Kontekst budzetu",
"check": "Uwzglednij wykorzystanie budzetu i utrate wyswietlania przez budzet przed rekomendacja zmiany strategii."
},
{
"area": "Zmiany po budzecie",
"check": "Jesli budzet byl niedawno zmieniany, rekomenduj odczekanie przed zmiana strategii albo celu."
},
{
"area": "Dopasowanie strategii",
"check": "Sprawdz, czy strategia pasuje do typu kampanii i dostepnego wolumenu danych."
},
{
"area": "Rekomendacja",
"check": "Pokaz konkretna rekomendacje decyzyjna bez automatycznego wdrazania zmian strategii."
}
],
"out_of_scope": [
"budzety i pacing budzetu",
"podstawowe ustawienia kampanii, np. lokalizacje i sieci",
"zapytania uzytkownikow oraz wykluczenia",
"reklamy, zasoby i kreacje",
"automatyczne wdrazanie zmian strategii stawek"
],
"knowledge_rules": [
{
"id": "search_new_campaign_no_weak_conversion_automation",
"topic": "strategie_stawek",
"rule_type": "warning",
"condition": "Nowa kampania Search bez historii danych używa automatycznej strategii opartej o konwersje albo opiera się na słabych, zbyt ogólnych lub niewiarygodnych konwersjach.",
"recommendation": "Nie startuj kampanii Search od automatyzacji opartej o konwersje, jeśli konto nie ma jakościowych danych. Najpierw ustaw konkretne cele konwersji, sprawdź pomiar i zbuduj sensowną strukturę słów kluczowych.",
"risk": "Algorytm może uczyć się na zbyt małej albo błędnej liczbie sygnałów, przez co kampania będzie źle wydawać budżet i zbierze dane niskiej jakości.",
"source": "manual"
},
{
"id": "target_roas_too_high_can_limit_spend",
"topic": "strategie_stawek",
"rule_type": "warning",
"condition": "Kampania używa strategii opartej o Docelowy ROAS, ma wystarczająco danych do oceny, a rzeczywisty ROAS jest wyraźnie niższy od ustawionego celu.",
"recommendation": "W planie oznacz, że Docelowy ROAS może być zbyt restrykcyjny. Przed zmianą celu wskaż, czy problem wynika z jakości kampanii, oferty lub feedu, czy z samego celu ustawionego zbyt wysoko względem aktualnej efektywności.",
"risk": "Zbyt wysoki Docelowy ROAS może ograniczać wydatki, zmniejszać liczbę wyświetleń i blokować skalowanie kampanii, mimo że kampania mogłaby generować wartościowy ruch przy mniej restrykcyjnym celu.",
"source": "manual"
},
{
"id": "smart_bidding_sequential_budget_and_target_changes",
"topic": "strategie_stawek",
"rule_type": "warning",
"condition": "Plan zaklada zmiane budzetu albo celu Smart Bidding, szczegolnie gdy zmiana jest duza albo nastepuje krotko po innej zmianie budzetu, strategii lub celu.",
"recommendation": "Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana.",
"risk": "Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji.",
"source": "manual"
}
],
"warnings": [],
"target_changes": [],
"changes": []
}

View File

@@ -0,0 +1,67 @@
# Plan: Sprawdzenie strategii stawek
Klient: investagd.pl
Utworzono: 2026-05-15T20:38:59+02:00
## Podsumowanie
- Kampanie aktywne z danymi 30 dni: 8
- Reguly wiedzy przypisane do zadania: 3
- Rekomendacje strategii do decyzji: 8
- Zmiany celu do wdrozenia po akceptacji: 0
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Typ strategii | Pokaz typ strategii ustalania stawek dla aktywnych kampanii. |
| Cele strategii | Pokaz aktualny Docelowy ROAS albo Docelowy CPA, jezeli kampania go uzywa. |
| Wolumen konwersji | Sprawdz liczbe konwersji z ostatnich 30 dni jako kontekst dla automatycznych strategii. |
| Stabilnosc decyzji | Oznacz kampanie, gdzie malo danych zwieksza ryzyko pochopnej zmiany strategii albo celu. |
| Ocena celu | Porownaj rzeczywisty ROAS/CPA z aktualnym celem i oznacz cele zbyt niskie albo zbyt wysokie. |
| Kontekst budzetu | Uwzglednij wykorzystanie budzetu i utrate wyswietlania przez budzet przed rekomendacja zmiany strategii. |
| Zmiany po budzecie | Jesli budzet byl niedawno zmieniany, rekomenduj odczekanie przed zmiana strategii albo celu. |
| Dopasowanie strategii | Sprawdz, czy strategia pasuje do typu kampanii i dostepnego wolumenu danych. |
| Rekomendacja | Pokaz konkretna rekomendacje decyzyjna bez automatycznego wdrazania zmian strategii. |
## Poza zakresem tego zadania
- budzety i pacing budzetu
- podstawowe ustawienia kampanii, np. lokalizacje i sieci
- zapytania uzytkownikow oraz wykluczenia
- reklamy, zasoby i kreacje
- automatyczne wdrazanie zmian strategii stawek
## Strategie stawek z ostatnich 30 dni
| Kampania | Typ | Strategia | Cel | Koszt | Konwersje | Wartosc konwersji | ROAS | Utrata budzet | Ocena celu | Stabilnosc | Budzet |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [PLA] catch-all | SHOPPING | TARGET_SPEND | brak jawnego celu | 36.67 PLN | 0.00 | 0.00 | 0.00 | 53.39% | brak jawnego celu do oceny | niestabilne: brak konwersji | mocne ograniczenie budzetem |
| [PLA_CL1] odkurzacze | SHOPPING | TARGET_ROAS | Docelowy ROAS 50% | 587.35 PLN | 0.00 | 0.00 | 0.00 | 38.63% | brak jawnego celu do oceny | niestabilne: brak konwersji | mocne ograniczenie budzetem |
| [Search] brand | SEARCH | TARGET_IMPRESSION_SHARE | brak jawnego celu | 290.50 PLN | 3.00 | 236.95 | 0.82 | 23.18% | brak jawnego celu do oceny | niestabilne: malo konwersji | ograniczenie budzetem do oceny |
| [PLA_CL1] odkurzacze_akcesoria | SHOPPING | TARGET_ROAS | Docelowy ROAS 50% | 190.36 PLN | 6.00 | 260.79 | 1.37 | 41.97% | za malo danych do oceny celu ROAS | niestabilne: malo konwersji | mocne ograniczenie budzetem |
| [PLA_CL1] pozostale | SHOPPING | TARGET_ROAS | Docelowy ROAS 50% | 181.06 PLN | 6.00 | 206.84 | 1.14 | 54.45% | za malo danych do oceny celu ROAS | niestabilne: malo konwersji | mocne ograniczenie budzetem |
| [PLA_CL1] worki | SHOPPING | TARGET_ROAS | Docelowy ROAS 50% | 297.18 PLN | 8.30 | 462.67 | 1.56 | 47.36% | za malo danych do oceny celu ROAS | niestabilne: malo konwersji | mocne ograniczenie budzetem |
| [PLA_CL1] czajniki | SHOPPING | TARGET_ROAS | Docelowy ROAS 50% | 0.00 PLN | 0.00 | 0.00 | 0.00 | 0.00% | brak jawnego celu do oceny | niestabilne: brak konwersji | brak silnego sygnalu budzetowego |
| [PLA_CL1] odkurzacze | catch_all | SHOPPING | TARGET_ROAS | Docelowy ROAS 50% | 0.00 PLN | 0.00 | 0.00 | 0.00 | 0.00% | brak jawnego celu do oceny | niestabilne: brak konwersji | brak silnego sygnalu budzetowego |
## Rekomendacje strategii do decyzji
| Kampania | Waznosc | Rekomendacja | Powod | Dopasowanie strategii |
| --- | --- | --- | --- | --- |
| [PLA] catch-all | czekaj | najpierw rozwiaz ograniczenie budzetem | zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji | do oceny recznej |
| [PLA_CL1] odkurzacze | czekaj | najpierw rozwiaz ograniczenie budzetem | zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji | ryzykowne: za malo konwersji dla strategii wartosci |
| [Search] brand | czekaj | najpierw rozwiaz ograniczenie budzetem | zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji | pasuje do kampanii brand/search, nie optymalizuje bezposrednio wartosci konwersji |
| [PLA_CL1] odkurzacze_akcesoria | czekaj | najpierw rozwiaz ograniczenie budzetem | zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji | ryzykowne: za malo konwersji dla strategii wartosci |
| [PLA_CL1] pozostale | czekaj | najpierw rozwiaz ograniczenie budzetem | zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji | ryzykowne: za malo konwersji dla strategii wartosci |
| [PLA_CL1] worki | czekaj | najpierw rozwiaz ograniczenie budzetem | zmiana celu strategii przy ograniczeniu budzetem moze zaciemnic efekt decyzji | ryzykowne: za malo konwersji dla strategii wartosci |
| [PLA_CL1] czajniki | ostroznie | nie zmieniaj strategii | niestabilne: brak konwersji | ryzykowne: za malo konwersji dla strategii wartosci |
| [PLA_CL1] odkurzacze | catch_all | ostroznie | nie zmieniaj strategii | niestabilne: brak konwersji | ryzykowne: za malo konwersji dla strategii wartosci |
## Reguly z bazy wiedzy
| ID | Temat | Rekomendacja | Ryzyko |
| --- | --- | --- | --- |
| search_new_campaign_no_weak_conversion_automation | strategie_stawek | Nie startuj kampanii Search od automatyzacji opartej o konwersje, jeśli konto nie ma jakościowych danych. Najpierw ustaw konkretne cele konwersji, sprawdź pomiar i zbuduj sensowną strukturę słów kluczowych. | Algorytm może uczyć się na zbyt małej albo błędnej liczbie sygnałów, przez co kampania będzie źle wydawać budżet i zbierze dane niskiej jakości. |
| target_roas_too_high_can_limit_spend | strategie_stawek | W planie oznacz, że Docelowy ROAS może być zbyt restrykcyjny. Przed zmianą celu wskaż, czy problem wynika z jakości kampanii, oferty lub feedu, czy z samego celu ustawionego zbyt wysoko względem aktualnej efektywności. | Zbyt wysoki Docelowy ROAS może ograniczać wydatki, zmniejszać liczbę wyświetleń i blokować skalowanie kampanii, mimo że kampania mogłaby generować wartościowy ruch przy mniej restrykcyjnym celu. |
| smart_bidding_sequential_budget_and_target_changes | strategie_stawek | Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana. | Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji. |

View File

@@ -0,0 +1,317 @@
{
"created_at": "2026-05-15T20:39:00+02:00",
"client": "investagd.pl",
"task": "check_account_anomalies",
"task_name": "Sprawdzenie anomalii konta",
"currency_code": "PLN",
"recent_period": {
"label": "ostatnie 7 zakonczonych dni",
"start": "2026-05-08",
"end": "2026-05-14"
},
"previous_period": {
"label": "poprzednie 7 dni",
"start": "2026-05-01",
"end": "2026-05-07"
},
"account_summary": [
{
"metric": "Koszt",
"previous": "405.29 PLN",
"recent": "977.96 PLN",
"change_percent": "+141.3%"
},
{
"metric": "Klikniecia",
"previous": "220",
"recent": "721",
"change_percent": "+227.7%"
},
{
"metric": "Wyswietlenia",
"previous": "9884",
"recent": "35547",
"change_percent": "+259.6%"
},
{
"metric": "Konwersje",
"previous": "5.23",
"recent": "18.07",
"change_percent": "+245.9%"
},
{
"metric": "Wartosc konwersji",
"previous": "214.17 PLN",
"recent": "953.07 PLN",
"change_percent": "+345.0%"
},
{
"metric": "CTR",
"previous": "2.2%",
"recent": "2.0%",
"change_percent": "-9.0%"
},
{
"metric": "Sredni CPC",
"previous": "1.84 PLN",
"recent": "1.36 PLN",
"change_percent": "-26.4%"
},
{
"metric": "ROAS",
"previous": "0.53",
"recent": "0.97",
"change_percent": "+83.0%"
}
],
"campaigns": [
{
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"status": "ENABLED",
"channel_type": "SHOPPING",
"previous_cost": "174.98 PLN",
"recent_cost": "412.37 PLN",
"cost_change": "+135.7%",
"previous_clicks": "80",
"recent_clicks": "193",
"clicks_change": "+141.2%",
"previous_conversions": "0.00",
"recent_conversions": "0.00",
"conversions_change": "nowe dane",
"previous_roas": "0.00",
"recent_roas": "0.00",
"roas_change": "nowe dane"
},
{
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"status": "ENABLED",
"channel_type": "SHOPPING",
"previous_cost": "67.66 PLN",
"recent_cost": "229.52 PLN",
"cost_change": "+239.2%",
"previous_clicks": "39",
"recent_clicks": "207",
"clicks_change": "+430.8%",
"previous_conversions": "3.23",
"recent_conversions": "5.07",
"conversions_change": "+57.3%",
"previous_roas": "2.11",
"recent_roas": "1.39",
"roas_change": "-34.1%"
},
{
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"status": "ENABLED",
"channel_type": "SHOPPING",
"previous_cost": "49.49 PLN",
"recent_cost": "131.57 PLN",
"cost_change": "+165.9%",
"previous_clicks": "28",
"recent_clicks": "125",
"clicks_change": "+346.4%",
"previous_conversions": "0.00",
"recent_conversions": "6.00",
"conversions_change": "nowe dane",
"previous_roas": "0.00",
"recent_roas": "1.57",
"roas_change": "nowe dane"
},
{
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"status": "ENABLED",
"channel_type": "SHOPPING",
"previous_cost": "69.92 PLN",
"recent_cost": "119.23 PLN",
"cost_change": "+70.5%",
"previous_clicks": "50",
"recent_clicks": "134",
"clicks_change": "+168.0%",
"previous_conversions": "2.00",
"recent_conversions": "4.00",
"conversions_change": "+100.0%",
"previous_roas": "1.02",
"recent_roas": "1.59",
"roas_change": "+55.9%"
},
{
"campaign_id": "22934868198",
"campaign_name": "[Search] brand",
"status": "ENABLED",
"channel_type": "SEARCH",
"previous_cost": "43.24 PLN",
"recent_cost": "48.60 PLN",
"cost_change": "+12.4%",
"previous_clicks": "23",
"recent_clicks": "35",
"clicks_change": "+52.2%",
"previous_conversions": "0.00",
"recent_conversions": "3.00",
"conversions_change": "nowe dane",
"previous_roas": "0.00",
"recent_roas": "4.88",
"roas_change": "nowe dane"
},
{
"campaign_id": "23836770153",
"campaign_name": "[PLA] catch-all",
"status": "ENABLED",
"channel_type": "SHOPPING",
"previous_cost": "0.00 PLN",
"recent_cost": "36.67 PLN",
"cost_change": "nowe dane",
"previous_clicks": "0",
"recent_clicks": "27",
"clicks_change": "nowe dane",
"previous_conversions": "0.00",
"recent_conversions": "0.00",
"conversions_change": "nowe dane",
"previous_roas": "0.00",
"recent_roas": "0.00",
"roas_change": "nowe dane"
}
],
"anomalies": [
{
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "koszt",
"severity": "srednie",
"previous_value": "174.98 PLN",
"recent_value": "412.37 PLN",
"change_percent": "+135.7%",
"reason": "koszt wzrosl szybciej niz typowy tygodniowy prog alarmowy",
"recommendation": "sprawdz budzet, strategie stawek i zmiany ruchu w osobnych zadaniach"
},
{
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "koszt",
"severity": "srednie",
"previous_value": "69.92 PLN",
"recent_value": "119.23 PLN",
"change_percent": "+70.5%",
"reason": "koszt wzrosl szybciej niz typowy tygodniowy prog alarmowy",
"recommendation": "sprawdz budzet, strategie stawek i zmiany ruchu w osobnych zadaniach"
},
{
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "koszt",
"severity": "srednie",
"previous_value": "67.66 PLN",
"recent_value": "229.52 PLN",
"change_percent": "+239.2%",
"reason": "koszt wzrosl szybciej niz typowy tygodniowy prog alarmowy",
"recommendation": "sprawdz budzet, strategie stawek i zmiany ruchu w osobnych zadaniach"
},
{
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "klikniecia",
"severity": "niskie",
"previous_value": "80",
"recent_value": "193",
"change_percent": "+141.2%",
"reason": "klikniecia wzrosly bardzo mocno tydzien do tygodnia",
"recommendation": "sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu"
},
{
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "klikniecia",
"severity": "niskie",
"previous_value": "50",
"recent_value": "134",
"change_percent": "+168.0%",
"reason": "klikniecia wzrosly bardzo mocno tydzien do tygodnia",
"recommendation": "sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu"
},
{
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "klikniecia",
"severity": "niskie",
"previous_value": "28",
"recent_value": "125",
"change_percent": "+346.4%",
"reason": "klikniecia wzrosly bardzo mocno tydzien do tygodnia",
"recommendation": "sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu"
},
{
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "klikniecia",
"severity": "niskie",
"previous_value": "39",
"recent_value": "207",
"change_percent": "+430.8%",
"reason": "klikniecia wzrosly bardzo mocno tydzien do tygodnia",
"recommendation": "sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu"
},
{
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"channel_type": "SHOPPING",
"status": "ENABLED",
"metric": "wartosc konwersji",
"severity": "niskie",
"previous_value": "142.87 PLN",
"recent_value": "319.79 PLN",
"change_percent": "+123.8%",
"reason": "wartosc konwersji wzrosla ponad dwukrotnie",
"recommendation": "sprawdz, czy wzrost wynika z realnej sprzedazy, a nie zmiany pomiaru"
}
],
"scope": [
{
"area": "Okres porownania",
"check": "Porownaj ostatnie 7 zakonczonych dni z poprzednimi 7 dniami, bez uzywania niepelnych danych z dzisiaj."
},
{
"area": "Metryki kampanii",
"check": "Sprawdz koszt, klikniecia, wyswietlenia, konwersje, wartosc konwersji, CTR, CPC i ROAS na poziomie aktywnych kampanii."
},
{
"area": "Nagly spadek",
"check": "Oznacz kampanie, w ktorych spadl ruch, koszt, konwersje, wartosc konwersji albo ROAS."
},
{
"area": "Nagly wzrost",
"check": "Oznacz kampanie, w ktorych koszt, CPC albo ruch wzrosly szybciej niz wyniki."
},
{
"area": "Priorytet reakcji",
"check": "Nadaj anomaliom poziom waznosci, aby agent mogl szybko zdecydowac, ktore kampanie sprawdzic jako pierwsze."
}
],
"out_of_scope": [
"zmiany budzetow i ocena pacingu budzetu",
"zmiany strategii stawek oraz celow Docelowy ROAS/Docelowy CPA",
"analiza zapytan uzytkownikow oraz wykluczen",
"analiza reklam RSA, zasobow i kreacji",
"wdrazanie zmian na koncie Google Ads"
],
"knowledge_rules": [],
"warnings": [
"Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Reguly dotyczace anomalii i alertow bedziemy dopisywac osobno po akceptacji uzytkownika."
],
"changes": []
}

View File

@@ -0,0 +1,75 @@
# Plan: Sprawdzenie anomalii konta
Klient: investagd.pl
Utworzono: 2026-05-15T20:39:00+02:00
## Okresy
- Ostatnie 7 zakonczonych dni: 2026-05-08 - 2026-05-14
- Poprzednie 7 dni: 2026-05-01 - 2026-05-07
## Podsumowanie
- Kampanie z danymi: 6
- Wykryte anomalie: 8
- Reguly wiedzy przypisane do zadania: 0
- Zmiany do wdrozenia: 0
## Uwagi
- Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Reguly dotyczace anomalii i alertow bedziemy dopisywac osobno po akceptacji uzytkownika.
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Okres porownania | Porownaj ostatnie 7 zakonczonych dni z poprzednimi 7 dniami, bez uzywania niepelnych danych z dzisiaj. |
| Metryki kampanii | Sprawdz koszt, klikniecia, wyswietlenia, konwersje, wartosc konwersji, CTR, CPC i ROAS na poziomie aktywnych kampanii. |
| Nagly spadek | Oznacz kampanie, w ktorych spadl ruch, koszt, konwersje, wartosc konwersji albo ROAS. |
| Nagly wzrost | Oznacz kampanie, w ktorych koszt, CPC albo ruch wzrosly szybciej niz wyniki. |
| Priorytet reakcji | Nadaj anomaliom poziom waznosci, aby agent mogl szybko zdecydowac, ktore kampanie sprawdzic jako pierwsze. |
## Poza zakresem tego zadania
- zmiany budzetow i ocena pacingu budzetu
- zmiany strategii stawek oraz celow Docelowy ROAS/Docelowy CPA
- analiza zapytan uzytkownikow oraz wykluczen
- analiza reklam RSA, zasobow i kreacji
- wdrazanie zmian na koncie Google Ads
## Podsumowanie konta
| Metryka | Poprzednie 7 dni | Ostatnie 7 dni | Zmiana |
| --- | --- | --- | --- |
| Koszt | 405.29 PLN | 977.96 PLN | +141.3% |
| Klikniecia | 220 | 721 | +227.7% |
| Wyswietlenia | 9884 | 35547 | +259.6% |
| Konwersje | 5.23 | 18.07 | +245.9% |
| Wartosc konwersji | 214.17 PLN | 953.07 PLN | +345.0% |
| CTR | 2.2% | 2.0% | -9.0% |
| Sredni CPC | 1.84 PLN | 1.36 PLN | -26.4% |
| ROAS | 0.53 | 0.97 | +83.0% |
## Wykryte anomalie
| Waznosc | Kampania | Metryka | Poprzednio | Teraz | Zmiana | Powod | Rekomendacja |
| --- | --- | --- | --- | --- | --- | --- | --- |
| srednie | [PLA_CL1] odkurzacze | koszt | 174.98 PLN | 412.37 PLN | +135.7% | koszt wzrosl szybciej niz typowy tygodniowy prog alarmowy | sprawdz budzet, strategie stawek i zmiany ruchu w osobnych zadaniach |
| srednie | [PLA_CL1] odkurzacze_akcesoria | koszt | 69.92 PLN | 119.23 PLN | +70.5% | koszt wzrosl szybciej niz typowy tygodniowy prog alarmowy | sprawdz budzet, strategie stawek i zmiany ruchu w osobnych zadaniach |
| srednie | [PLA_CL1] worki | koszt | 67.66 PLN | 229.52 PLN | +239.2% | koszt wzrosl szybciej niz typowy tygodniowy prog alarmowy | sprawdz budzet, strategie stawek i zmiany ruchu w osobnych zadaniach |
| niskie | [PLA_CL1] odkurzacze | klikniecia | 80 | 193 | +141.2% | klikniecia wzrosly bardzo mocno tydzien do tygodnia | sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu |
| niskie | [PLA_CL1] odkurzacze_akcesoria | klikniecia | 50 | 134 | +168.0% | klikniecia wzrosly bardzo mocno tydzien do tygodnia | sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu |
| niskie | [PLA_CL1] pozostale | klikniecia | 28 | 125 | +346.4% | klikniecia wzrosly bardzo mocno tydzien do tygodnia | sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu |
| niskie | [PLA_CL1] worki | klikniecia | 39 | 207 | +430.8% | klikniecia wzrosly bardzo mocno tydzien do tygodnia | sprawdz, czy wzrost jest jakosciowy i nie wynika z niepasujacego ruchu |
| niskie | [PLA_CL1] worki | wartosc konwersji | 142.87 PLN | 319.79 PLN | +123.8% | wartosc konwersji wzrosla ponad dwukrotnie | sprawdz, czy wzrost wynika z realnej sprzedazy, a nie zmiany pomiaru |
## Porownanie kampanii
| Kampania | Typ | Status | Koszt poprzednio | Koszt teraz | Zmiana kosztu | Konwersje poprzednio | Konwersje teraz | Zmiana konwersji | ROAS poprzednio | ROAS teraz | Zmiana ROAS |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [PLA_CL1] odkurzacze | SHOPPING | ENABLED | 174.98 PLN | 412.37 PLN | +135.7% | 0.00 | 0.00 | nowe dane | 0.00 | 0.00 | nowe dane |
| [PLA_CL1] worki | SHOPPING | ENABLED | 67.66 PLN | 229.52 PLN | +239.2% | 3.23 | 5.07 | +57.3% | 2.11 | 1.39 | -34.1% |
| [PLA_CL1] pozostale | SHOPPING | ENABLED | 49.49 PLN | 131.57 PLN | +165.9% | 0.00 | 6.00 | nowe dane | 0.00 | 1.57 | nowe dane |
| [PLA_CL1] odkurzacze_akcesoria | SHOPPING | ENABLED | 69.92 PLN | 119.23 PLN | +70.5% | 2.00 | 4.00 | +100.0% | 1.02 | 1.59 | +55.9% |
| [Search] brand | SEARCH | ENABLED | 43.24 PLN | 48.60 PLN | +12.4% | 0.00 | 3.00 | nowe dane | 0.00 | 4.88 | nowe dane |
| [PLA] catch-all | SHOPPING | ENABLED | 0.00 PLN | 36.67 PLN | nowe dane | 0.00 | 0.00 | nowe dane | 0.00 | 0.00 | nowe dane |

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,173 @@
# Plan: Synchronizacja kampanii PLA_CL1
Klient: investagd.pl
Utworzono: 2026-05-15T20:43:15+02:00
## Podsumowanie
- Kampanie PLA_CL1: 6
- Produkty z adsPRO: 185
- Grupy reklam obecnie: 353
- Grupy reklam z identyfikatorem produktu: 346
- Do utworzenia: 0
- Do włączenia: 0
- Do wstrzymania: 76
- Do zmiany nazwy: 6
## Uwagi
- Grupy reklam bez dopasowania w adsPRO: 43.
- Produkty z CL4=paused pominiete przy tworzeniu i wlaczaniu grup reklam: 60.
- Aktywne grupy reklam produktow z CL4=paused do wstrzymania: 72.
- Grupy reklam w zlym wariancie kampanii (CL4 nie pasuje): 6.
- Grupy reklam w zlej kampanii (CL1 nie pasuje): 70.
## Podsumowanie po kampaniach
| Kampania | Utworz | Wlacz | Wstrzymaj | Zmien nazwe |
| --- | ---: | ---: | ---: | ---: |
| [PLA_CL1] odkurzacze | 0 | 0 | 14 | 0 |
| [PLA_CL1] odkurzacze | catch_all | 0 | 0 | 14 | 0 |
| [PLA_CL1] odkurzacze_akcesoria | 0 | 0 | 31 | 0 |
| [PLA_CL1] pozostale | 0 | 0 | 8 | 1 |
| [PLA_CL1] worki | 0 | 0 | 9 | 5 |
## Grupy reklam bez dopasowania w adsPRO
| Kampania | Grupa reklam | Status | Identyfikator produktu |
| --- | --- | --- | --- |
| [PLA_CL1] pozostale | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] pozostale | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] pozostale | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] pozostale | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] pozostale | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] pozostale | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] pozostale | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] worki | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] worki | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] worki | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] worki | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] worki | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] worki | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] worki | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze_akcesoria | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze_akcesoria | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] odkurzacze_akcesoria | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] odkurzacze_akcesoria | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] odkurzacze_akcesoria | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] odkurzacze_akcesoria | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] odkurzacze_akcesoria | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] odkurzacze | catch_all | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] odkurzacze | catch_all | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] odkurzacze | catch_all | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] odkurzacze | catch_all | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze | catch_all | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] odkurzacze | catch_all | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] odkurzacze | catch_all | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] odkurzacze | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] odkurzacze | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] odkurzacze | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] odkurzacze | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] odkurzacze | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] odkurzacze | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] czajniki | deleted01 | PAUSED | |
| [PLA_CL1] czajniki | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] czajniki | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] czajniki | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] czajniki | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] czajniki | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] czajniki | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] czajniki | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
## Grupy reklam do wstrzymania
| Kampania | Grupa reklam | Powod |
| --- | --- | --- |
| [PLA_CL1] odkurzacze_akcesoria | Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny) | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | Odkurzacz workowy Profi P6 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Wąż ssący do odkurzaczy Zelmer 321.0110 (czarny) | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr piankowy I typ 919.0087 do odkurzaczy Zelmer Aquos 829, Aquawelt 919 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr S Hepa IG-03 do odkurzacza Invest GALACTICO | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Rowenta Silence Force , Silence Force Compact, Silence Force, Extreme, Silence Force Extreme Compact, ZR002901 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka 3w1 do odkurzaczy Zelmer - 32 mm typ 354 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzaczy Kärcher WD4, WD5, WD 4.200 - WD 4.500, 6.414-960.0 OKRĄGŁY - FK-454 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] worki | Worki PHILIPS Athena Duathlon, HR6814-6855; IZ-PH6.1F | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] pozostale | Wkłady filtrujące do dzbanka Aquaphor Maxfor+ 3szt | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] pozostale | Wkład do butelki filtrującej Aquaphor City | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka okrągła z naturalnym włosiem 35 mm do odkurzaczy Bosch | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] worki | Worki do odkurzacza Amica Universis Beris Sumam Nortes papierowe 5 szt. | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] pozostale | Szatkownica do maszynki do mięsa Zelmer 586 686 886 986 - przystawka z 4 tarkami (plastry, wiórki, ziemniaki) SA01 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | PHILIPS SpeedPro Max FC5005 FC6802 FILTR | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | Odkurzacz workowy Profi 1.2 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | Zestaw odkurzacz workowy Profi 11.5 + 12 x worki i 1x filtr | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi 1.2 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY VM 1058 SURAZO | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY INVEST GALACTICO 850 W | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi P6 + 5x worki - zestaw | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY AMICA VM 1033 ORA | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi P6 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | Zestaw odkurzacz workowy Profi 1.2 + 5x worki do odkurzacza | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | Zestaw odkurzacz workowy Profi 1.2.1 + worki do odkurzacza | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi 1.2.1 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz przemysłowy Invest Profus III - budowlany warsztatowy do pracy na sucho i mokro 1200W 10L | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY ZELMER TADEK ZVC261 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | catch_all | Odkurzacz workowy Profi 11.5 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr powietrza wstępny 719.0060 do odkurzacza ZELMER 719 Wodnik Duo, Wodnik Duo Plus 819 Aquario | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr HEPA 719.0150 do odkurzacza ZELMER 719 Wodnik Duo, 819 Aquario, Wodnik Duo Plus, 829 Aquos | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr EPA 12 do odkurzacza ELECTROLUX Airmax, Clario, Ergo Space, Ultra Silencer, IZ-FHE1 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Miele S4000 S5000 S6000 S8000; GA4007 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała z welurem SM 0535 do odkurzacza Bosch,Siemens, Moulinex , Karcher | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw ssawek IZ-ZDE do dywanów i wykładzin do odkurzacza Electrolux, Philips, Amica | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | Odkurzacz workowy Profi 1.2.1 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] worki | Worki papierowe do odkurzaczy SAMSUNG Easy RC 999, VP-95B; IZ-FA6 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] worki | SZCZOTKA KOŃCÓWKA DO PAROWNICY KARCHER SC SC1 SC2 SC3 SC4 SC5 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] pozostale | Wąż dopływowy 3,0 do pralki / zmywarki - 3 m | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] worki | 5X Worki do odkurzacza Zelmer 700, 701, Compact, IZ-700.0020 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY VM 1058 SURAZO | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] pozostale | Wąż dopływowy 1,0 do pralki / zmywarki - 1 m | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] pozostale | Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] worki | 5X WORKI KARCHER A2000 A2004 A2054 WD2 WD2.200 WD2.250 ZAMIENNIK | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka do odkurzacza Zelmer duża podłogowa 32mm 23cm typ 49.1900 zamiennik (EAN 5905857142659) | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Mała ssawka z welurem SM35 do odkurzacza Bosch, Karcher, Profi, Miele, Moulinex, Samsung | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw filtrów GA3833 do odkurzacza PHILIPS FC 8058/01, PowerPro Active FC 8630 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr 5000.0050ZKU HEPA 13 z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Clarris Twix, Magnat, Jupiter | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw ssawek IZ-ZDK do dywanów i wykładzin do odkurzacza Karcher, Bosch, Siemens, Profi, Rowenta | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY ZELMER TADEK ZVC261 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | Odkurzacz workowy Profi 11.5 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki | produkt jest w zlej kampanii |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki | produkt jest w zlej kampanii |
| [PLA_CL1] worki | Worki PANASONIC AMC 8 F01 T 1000, C 20E, MC-E 761; IZ-PC5 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] worki | Worki papierowe do NILFISK 818460.00, GD 1000, GD 1000 SER, GD 1005, GD 1010, GDS 1010, HDS 1010, VP 100; IZ-NI3 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] pozostale | Butelka filtrująca Aquaphor City 500 ml granatowa + wkład | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Płyn czyszczący do odkurzaczy piorących PL.D | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw akcesoriów do odkurzacza iRobot Roomba TS-75 | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr EPA 12 2000.0050KU z uszczelką do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Magnat, Jupiter, Solaris | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Filtr wlotowy 601201.4070 do odkurzacza Zelmer Voyager Twix | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka do odkurzacza Zelmer z welurem 32mm - mała ssawka do mebli i tapicerki | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw ssawek IZ-SPZ do paneli do odkurzaczy Zelmer | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw ssawek IZ-ZDZ do dywanów do odkurzaczy Zelmer | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała 49.0003 do odkurzacza ZELMER | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Turboszczotka uniwersalna z regulowaną średnicą 30-38mm | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] worki | Worek płócienny Electrolux S-bag; IZ-E5/PH5WP | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Szczotka ssawka do paneli z naturalnym włosiem do odkurzacza Bosch, Karcher, Siemens, Rowenta, Profi - IZ-SPU | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | Odkurzacz workowy Profi P6 + 5x worki - zestaw | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze_akcesoria | Zestaw ssawek naturalnym włosiem do paneli do odkurzacza Electrolux, Amica, Samsung, Philips typ IZ-SPE | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY AMICA VM 1033 ORA | produkt ma CL4=paused w adsPRO |
| [PLA_CL1] pozostale | Dzbanek filtrujący Aquaphor Jasper 2,8L + wkład maxfor+ | produkt ma CL4=paused w adsPRO |
## Nazwy grup reklam do zmiany
| Kampania | Obecna nazwa | Nowa nazwa |
| --- | --- | --- |
| [PLA_CL1] pozostale | Zelmer zestaw trzepaków do miksera 181 281 371 381 | Trzepaki do miksera Zelmer 371K - komplet do robotów 181, 281, 371, 381 |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux Mondo E44 E49 | Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe + filtry |
| [PLA_CL1] worki | 5X Worki papierowe do odkurzacza Zelmer 2000, Aquawelt, Aquos, Cobra, Meteor 2, Voyager | Worki do odkurzacza Zelmer Meteor 2 Cobra Aquawelt Voyager - papierowe 5 szt |
| [PLA_CL1] worki | 5 SZT WORKI DO LIDL PARKSIDE PNTS 1300 1400 | Worki do odkurzacza Parkside PNTS 1300 1400 syntetyczne 5 szt. - zamiennik Lidl Einhell |
| [PLA_CL1] worki | Worki do odkurzaczy Amica Nimis VM 1021, 1022, Qubis Base VJ 1031, 1032, Universis Base VK 1012, Universis VK 1011, Ventis VK 4021 IZ-AM2/AM3S | Worki do odkurzacza Amica Nimis Qubis Universis Ventis IZ-AM2 |
| [PLA_CL1] worki | Worki ELECTROLUX E 44, E 49, Mondo, Mondo E 49, Mondo II, Mondo Z 1100 - 1199 | Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe |

View File

@@ -0,0 +1,73 @@
{
"created_at": "2026-05-15T21:26:50+02:00",
"client": "investagd.pl",
"task": "check_pla_settings",
"campaigns": [
{
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23836770153",
"campaign_name": "[PLA] catch-all",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
},
{
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecność",
"campaign_priority": "HIGH",
"campaign_priority_label": "Wysoki"
}
],
"changes": [],
"skipped_rules": [],
"warnings": []
}

View File

@@ -0,0 +1,21 @@
# Plan: Sprawdzenie ustawien kampanii PLA
Klient: investagd.pl
Utworzono: 2026-05-15T21:26:50+02:00
## Podsumowanie
- Kampanie PLA: 7
- Korekty do wdrozenia: 0
## Kampanie PLA
| Kampania | Status | Lokalizacje | Priorytet |
| --- | --- | --- | --- |
| [PLA_CL1] odkurzacze_akcesoria | ENABLED | Obecność | Wysoki |
| [PLA_CL1] odkurzacze | ENABLED | Obecność | Wysoki |
| [PLA_CL1] worki | ENABLED | Obecność | Wysoki |
| [PLA_CL1] pozostale | ENABLED | Obecność | Wysoki |
| [PLA] catch-all | ENABLED | Obecność | Wysoki |
| [PLA_CL1] odkurzacze | catch_all | ENABLED | Obecność | Wysoki |
| [PLA_CL1] czajniki | ENABLED | Obecność | Wysoki |

View File

@@ -0,0 +1,60 @@
{
"created_at": "2026-05-15T21:28:45+02:00",
"client": "investagd.pl",
"task": "check_search_basic_settings",
"task_name": "Sprawdzenie podstawowych ustawien Search",
"campaigns": [
{
"campaign_id": "20530740619",
"campaign_name": "[DSA] produkty",
"status": "PAUSED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecnosc",
"target_google_search": true,
"target_search_network": false,
"target_partner_search_network": false,
"target_content_network": false
},
{
"campaign_id": "22934868198",
"campaign_name": "[Search] brand",
"status": "ENABLED",
"positive_geo_target_type": "PRESENCE",
"positive_geo_target_type_label": "Obecnosc",
"target_google_search": true,
"target_search_network": false,
"target_partner_search_network": false,
"target_content_network": false
}
],
"changes": [],
"scope": [
{
"area": "Lokalizacje",
"check": "Wymagaj kierowania lokalizacji na Obecnosc; inne tryby przygotuj jako korekte do wdrozenia."
},
{
"area": "Sieci",
"check": "Wymagaj wylaczonej sieci reklamowej i wylaczonych partnerow wyszukiwania w kampaniach Search."
},
{
"area": "Jezyki",
"check": "Sprawdz, czy ustawienia jezykowe sa zgodne z rynkiem klienta."
},
{
"area": "Harmonogram reklam",
"check": "Sprawdz, czy harmonogram jest swiadomie ustawiony albo czy kampania dziala caly czas."
}
],
"out_of_scope": [
"budzety i wykorzystanie budzetu",
"strategie stawek i uczenie strategii",
"zapytania uzytkownikow oraz wykluczenia",
"reklamy RSA i zasoby reklam",
"wyniki kampanii oraz rentownosc"
],
"knowledge_rules": [],
"warnings": [
"Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Uzyj `python gads.py wiedza przypisz --restart`, gdy bedziemy wybierac reguly dla Search."
]
}

View File

@@ -0,0 +1,38 @@
# Plan: Sprawdzenie podstawowych ustawien Search
Klient: investagd.pl
Utworzono: 2026-05-15T21:28:45+02:00
## Podsumowanie
- Kampanie Search: 2
- Reguly wiedzy przypisane do zadania: 0
- Zmiany do wdrozenia: 0
## Uwagi
- Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Uzyj `python gads.py wiedza przypisz --restart`, gdy bedziemy wybierac reguly dla Search.
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Lokalizacje | Wymagaj kierowania lokalizacji na Obecnosc; inne tryby przygotuj jako korekte do wdrozenia. |
| Sieci | Wymagaj wylaczonej sieci reklamowej i wylaczonych partnerow wyszukiwania w kampaniach Search. |
| Jezyki | Sprawdz, czy ustawienia jezykowe sa zgodne z rynkiem klienta. |
| Harmonogram reklam | Sprawdz, czy harmonogram jest swiadomie ustawiony albo czy kampania dziala caly czas. |
## Poza zakresem tego zadania
- budzety i wykorzystanie budzetu
- strategie stawek i uczenie strategii
- zapytania uzytkownikow oraz wykluczenia
- reklamy RSA i zasoby reklam
- wyniki kampanii oraz rentownosc
## Kampanie Search
| Kampania | Status | Lokalizacje | Google Search | Search Network | Partnerzy | Siec reklamowa |
| --- | --- | --- | --- | --- | --- | --- |
| [DSA] produkty | PAUSED | Obecnosc | TAK | NIE | NIE | NIE |
| [Search] brand | ENABLED | Obecnosc | TAK | NIE | NIE | NIE |

View File

@@ -0,0 +1,437 @@
{
"created_at": "2026-05-15T21:29:31+02:00",
"client": "investagd.pl",
"task": "check_conversion_tracking",
"task_name": "Sprawdzenie pomiaru konwersji",
"currency_code": "PLN",
"conversion_actions": [
{
"conversion_action_id": "7148777438",
"resource_name": "customers/2298555588/conversionActions/7148777438",
"name": "GADS - add_to_cart",
"status": "ENABLED",
"type": "WEBPAGE",
"category": "ADD_TO_CART",
"primary_for_goal": false,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 30,
"view_window_days": 1,
"attribution_model": "GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni"
],
"recommendation": "Sprawdz, czy akcja nadal powinna byc aktywna i czy tag uruchamia sie na wlasciwym zdarzeniu."
},
{
"conversion_action_id": "7075615613",
"resource_name": "customers/2298555588/conversionActions/7075615613",
"name": "Clicks to call",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "CONTACT",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 2.0,
"all_conversion_value_30d": 2.0,
"is_collecting_data": true,
"problem_flags": [
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7061592203",
"resource_name": "customers/2298555588/conversionActions/7061592203",
"name": "Działania lokalne inne interakcje",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "ENGAGEMENT",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 29.0,
"all_conversion_value_30d": 29.0,
"is_collecting_data": true,
"problem_flags": [
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7053031175",
"resource_name": "customers/2298555588/conversionActions/7053031175",
"name": "YouTube channel subscriptions",
"status": "ENABLED",
"type": "UNKNOWN",
"category": "ENGAGEMENT",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "ONE_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 1,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni",
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7075914415",
"resource_name": "customers/2298555588/conversionActions/7075914415",
"name": "Local actions - Directions",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "GET_DIRECTIONS",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 3.0,
"all_conversion_value_30d": 3.0,
"is_collecting_data": true,
"problem_flags": [
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7069930207",
"resource_name": "customers/2298555588/conversionActions/7069930207",
"name": "Local actions - Website visits",
"status": "ENABLED",
"type": "GOOGLE_HOSTED",
"category": "PAGE_VIEW",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 7,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni",
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7380507064",
"resource_name": "customers/2298555588/conversionActions/7380507064",
"name": "Calls from ads",
"status": "ENABLED",
"type": "AD_CALL",
"category": "PHONE_CALL_LEAD",
"primary_for_goal": false,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "XXX",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 30,
"attribution_model": "GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 5.0,
"all_conversion_value_30d": 5.0,
"is_collecting_data": true,
"problem_flags": [
"ok"
],
"recommendation": "Bez pilnej zmiany; zostaw jako kontekst albo konwersje dodatkowa."
},
{
"conversion_action_id": "7058948335",
"resource_name": "customers/2298555588/conversionActions/7058948335",
"name": "Investagd.pl GA4 (G-NW44987MSE) (web) purchase",
"status": "ENABLED",
"type": "GOOGLE_ANALYTICS_4_PURCHASE",
"category": "PURCHASE",
"primary_for_goal": true,
"include_in_conversions_metric": true,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 90,
"view_window_days": 1,
"attribution_model": "UNKNOWN",
"conversions_30d": 69.0,
"conversion_value_30d": 3177.07,
"all_conversions_30d": 120.25,
"all_conversion_value_30d": 5987.77,
"is_collecting_data": true,
"problem_flags": [
"ok"
],
"recommendation": "Dane zakupowe wygladaja na podstawowy sygnal optymalizacji; kontroluj wartosc i duplikacje."
},
{
"conversion_action_id": "6574100052",
"resource_name": "customers/2298555588/conversionActions/6574100052",
"name": "purchase",
"status": "ENABLED",
"type": "WEBPAGE",
"category": "PURCHASE",
"primary_for_goal": true,
"include_in_conversions_metric": true,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 30,
"view_window_days": 1,
"attribution_model": "GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"brak danych 30 dni",
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7460221088",
"resource_name": "customers/2298555588/conversionActions/7460221088",
"name": "Wyświetlenia po obejrzeniu reklamy w YouTube",
"status": "ENABLED",
"type": "UNKNOWN",
"category": "YOUTUBE_FOLLOW_ON_VIEWS",
"primary_for_goal": true,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": true,
"click_window_days": 30,
"view_window_days": 1,
"attribution_model": "GOOGLE_ADS_LAST_CLICK",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 1.0,
"all_conversion_value_30d": 1.0,
"is_collecting_data": true,
"problem_flags": [
"podstawowa bez konwersji"
],
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"conversion_action_id": "7058948338",
"resource_name": "customers/2298555588/conversionActions/7058948338",
"name": "Investagd.pl GA4 (G-NW44987MSE) (web) generate_lead",
"status": "HIDDEN",
"type": "GOOGLE_ANALYTICS_4_CUSTOM",
"category": "PAGE_VIEW",
"primary_for_goal": false,
"include_in_conversions_metric": false,
"counting_type": "MANY_PER_CLICK",
"default_value": 1.0,
"default_currency_code": "PLN",
"always_use_default_value": false,
"click_window_days": 90,
"view_window_days": 1,
"attribution_model": "UNKNOWN",
"conversions_30d": 0.0,
"conversion_value_30d": 0.0,
"all_conversions_30d": 0.0,
"all_conversion_value_30d": 0.0,
"is_collecting_data": false,
"problem_flags": [
"akcja nieaktywna"
],
"recommendation": "Zostaw nieaktywna, jesli jest historyczna; w przeciwnym razie uporzadkuj konfiguracje konwersji."
}
],
"action_summary": [
{
"metric": "akcje konwersji",
"count": 11
},
{
"metric": "aktywne",
"count": 10
},
{
"metric": "podstawowe",
"count": 8
},
{
"metric": "zbieraja dane 30 dni",
"count": 6
},
{
"metric": "z problemami",
"count": 9
},
{
"metric": "podstawowe z danymi",
"count": 1
}
],
"findings": [
{
"severity": "wysokie",
"area": "CONTACT",
"item": "Clicks to call",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "ENGAGEMENT",
"item": "Działania lokalne inne interakcje",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "ENGAGEMENT",
"item": "YouTube channel subscriptions",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "GET_DIRECTIONS",
"item": "Local actions - Directions",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "PAGE_VIEW",
"item": "Local actions - Website visits",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "PURCHASE",
"item": "purchase",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "wysokie",
"area": "YOUTUBE_FOLLOW_ON_VIEWS",
"item": "Wyświetlenia po obejrzeniu reklamy w YouTube",
"problem": "podstawowa bez konwersji",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "srednie",
"area": "ADD_TO_CART",
"item": "GADS - add_to_cart",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz, czy akcja nadal powinna byc aktywna i czy tag uruchamia sie na wlasciwym zdarzeniu."
},
{
"severity": "srednie",
"area": "ENGAGEMENT",
"item": "YouTube channel subscriptions",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "srednie",
"area": "PAGE_VIEW",
"item": "Investagd.pl GA4 (G-NW44987MSE) (web) generate_lead",
"problem": "akcja nieaktywna",
"recommendation": "Zostaw nieaktywna, jesli jest historyczna; w przeciwnym razie uporzadkuj konfiguracje konwersji."
},
{
"severity": "srednie",
"area": "PAGE_VIEW",
"item": "Local actions - Website visits",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
},
{
"severity": "srednie",
"area": "PURCHASE",
"item": "purchase",
"problem": "brak danych 30 dni",
"recommendation": "Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji."
}
],
"changes": [],
"scope": [
{
"area": "Akcje konwersji",
"check": "Pobierz akcje konwersji z Google Ads, ich status, typ, kategorie i ustawienie podstawowa/dodatkowa."
},
{
"area": "Dane 30 dni",
"check": "Sprawdz, czy akcje konwersji zbieraja konwersje, wartosc konwersji i wszystkie konwersje z ostatnich 30 dni."
},
{
"area": "Wartosc konwersji",
"check": "Oznacz konwersje zakupowe i e-commerce bez wartosci albo bez waluty jako problem do poprawy pomiaru."
},
{
"area": "Jakosc optymalizacji",
"check": "Oznacz brak aktywnych konwersji podstawowych, brak danych 30 dni oraz podejrzana duplikacje podobnych akcji."
},
{
"area": "Rekomendacje",
"check": "Przygotuj rekomendacje decyzyjne do konfiguracji pomiaru; skrypt nie wdraza zmian automatycznie."
}
],
"knowledge_rules": [],
"warnings": [
"Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Reguly dotyczace pomiaru konwersji warto dopisac po pierwszych audytach."
]
}

View File

@@ -0,0 +1,69 @@
# Plan: Sprawdzenie pomiaru konwersji
Klient: investagd.pl
Utworzono: 2026-05-15T21:29:31+02:00
## Podsumowanie
- Akcje konwersji: 11
- Problemy / rekomendacje: 12
- Reguly wiedzy przypisane do zadania: 0
- Zmiany do wdrozenia: 0
## Uwagi
- Do tego zadania nie przypisano jeszcze regul z bazy wiedzy. Reguly dotyczace pomiaru konwersji warto dopisac po pierwszych audytach.
## Zakres audytu
| Obszar | Co sprawdzic |
| --- | --- |
| Akcje konwersji | Pobierz akcje konwersji z Google Ads, ich status, typ, kategorie i ustawienie podstawowa/dodatkowa. |
| Dane 30 dni | Sprawdz, czy akcje konwersji zbieraja konwersje, wartosc konwersji i wszystkie konwersje z ostatnich 30 dni. |
| Wartosc konwersji | Oznacz konwersje zakupowe i e-commerce bez wartosci albo bez waluty jako problem do poprawy pomiaru. |
| Jakosc optymalizacji | Oznacz brak aktywnych konwersji podstawowych, brak danych 30 dni oraz podejrzana duplikacje podobnych akcji. |
| Rekomendacje | Przygotuj rekomendacje decyzyjne do konfiguracji pomiaru; skrypt nie wdraza zmian automatycznie. |
## Podsumowanie akcji
| Metryka | Liczba |
| --- | --- |
| akcje konwersji | 11 |
| aktywne | 10 |
| podstawowe | 8 |
| zbieraja dane 30 dni | 6 |
| z problemami | 9 |
| podstawowe z danymi | 1 |
## Problemy i rekomendacje
| Waznosc | Obszar | Element | Problem | Rekomendacja |
| --- | --- | --- | --- | --- |
| wysokie | CONTACT | Clicks to call | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | ENGAGEMENT | Działania lokalne inne interakcje | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | ENGAGEMENT | YouTube channel subscriptions | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | GET_DIRECTIONS | Local actions - Directions | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | PAGE_VIEW | Local actions - Website visits | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | PURCHASE | purchase | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| wysokie | YOUTUBE_FOLLOW_ON_VIEWS | Wyświetlenia po obejrzeniu reklamy w YouTube | podstawowa bez konwersji | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| srednie | ADD_TO_CART | GADS - add_to_cart | brak danych 30 dni | Sprawdz, czy akcja nadal powinna byc aktywna i czy tag uruchamia sie na wlasciwym zdarzeniu. |
| srednie | ENGAGEMENT | YouTube channel subscriptions | brak danych 30 dni | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| srednie | PAGE_VIEW | Investagd.pl GA4 (G-NW44987MSE) (web) generate_lead | akcja nieaktywna | Zostaw nieaktywna, jesli jest historyczna; w przeciwnym razie uporzadkuj konfiguracje konwersji. |
| srednie | PAGE_VIEW | Local actions - Website visits | brak danych 30 dni | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
| srednie | PURCHASE | purchase | brak danych 30 dni | Sprawdz tag i zasadnosc uzywania tej akcji jako podstawowej do optymalizacji. |
## Akcje konwersji
| Nazwa | Status | Typ | Kategoria | Podstawowa | W konwersjach | Konw. 30d | Wartosc 30d | Wszystkie konw. 30d | Wartosc wszystkich 30d | Okno klik. | Okno view | Problemy |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| GADS - add_to_cart | ENABLED | WEBPAGE | ADD_TO_CART | NIE | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 1 | brak danych 30 dni |
| Clicks to call | ENABLED | GOOGLE_HOSTED | CONTACT | TAK | NIE | 0.00 | 0.00 PLN | 2.00 | 2.00 PLN | 30 | 7 | podstawowa bez konwersji |
| Działania lokalne inne interakcje | ENABLED | GOOGLE_HOSTED | ENGAGEMENT | TAK | NIE | 0.00 | 0.00 PLN | 29.00 | 29.00 PLN | 30 | 7 | podstawowa bez konwersji |
| YouTube channel subscriptions | ENABLED | UNKNOWN | ENGAGEMENT | TAK | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 1 | brak danych 30 dni, podstawowa bez konwersji |
| Local actions - Directions | ENABLED | GOOGLE_HOSTED | GET_DIRECTIONS | TAK | NIE | 0.00 | 0.00 PLN | 3.00 | 3.00 PLN | 30 | 7 | podstawowa bez konwersji |
| Local actions - Website visits | ENABLED | GOOGLE_HOSTED | PAGE_VIEW | TAK | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 7 | brak danych 30 dni, podstawowa bez konwersji |
| Calls from ads | ENABLED | AD_CALL | PHONE_CALL_LEAD | NIE | NIE | 0.00 | 0.00 PLN | 5.00 | 5.00 PLN | 30 | 30 | ok |
| Investagd.pl GA4 (G-NW44987MSE) (web) purchase | ENABLED | GOOGLE_ANALYTICS_4_PURCHASE | PURCHASE | TAK | TAK | 69.00 | 3177.07 PLN | 120.25 | 5987.77 PLN | 90 | 1 | ok |
| purchase | ENABLED | WEBPAGE | PURCHASE | TAK | TAK | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 30 | 1 | brak danych 30 dni, podstawowa bez konwersji |
| Wyświetlenia po obejrzeniu reklamy w YouTube | ENABLED | UNKNOWN | YOUTUBE_FOLLOW_ON_VIEWS | TAK | NIE | 0.00 | 0.00 PLN | 1.00 | 1.00 PLN | 30 | 1 | podstawowa bez konwersji |
| Investagd.pl GA4 (G-NW44987MSE) (web) generate_lead | HIDDEN | GOOGLE_ANALYTICS_4_CUSTOM | PAGE_VIEW | NIE | NIE | 0.00 | 0.00 PLN | 0.00 | 0.00 PLN | 90 | 1 | akcja nieaktywna |

View File

@@ -0,0 +1,592 @@
{
"created_at": "2026-05-15T21:30:57+02:00",
"client": "investagd.pl",
"products_count": 185,
"task": "sync_pla_cl1",
"campaigns": [
{
"id": "23797182612",
"name": "[PLA_CL1] odkurzacze_akcesoria",
"status": "ENABLED",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": ""
},
{
"id": "23797198440",
"name": "[PLA_CL1] odkurzacze",
"status": "ENABLED",
"allowed": [
"odkurzacze"
],
"variant": ""
},
{
"id": "23825822059",
"name": "[PLA_CL1] worki",
"status": "ENABLED",
"allowed": [
"worki"
],
"variant": ""
},
{
"id": "23825825449",
"name": "[PLA_CL1] pozostale",
"status": "ENABLED",
"allowed": [
"pozostale"
],
"variant": ""
},
{
"id": "23846225484",
"name": "[PLA_CL1] odkurzacze | catch_all",
"status": "ENABLED",
"allowed": [
"odkurzacze"
],
"variant": "catch_all"
},
{
"id": "23846238222",
"name": "[PLA_CL1] czajniki",
"status": "ENABLED",
"allowed": [
"czajniki"
],
"variant": ""
}
],
"groups_total": 353,
"groups_with_product_id": 346,
"create_plan": [],
"enable_plan": [],
"pause_plan": [],
"rename_plan": [],
"warnings": [
"Grupy reklam bez dopasowania w adsPRO: 43.",
"Produkty z CL4=paused pominiete przy tworzeniu i wlaczaniu grup reklam: 60.",
"Grupy reklam w zlym wariancie kampanii (CL4 nie pasuje): 6.",
"Grupy reklam w zlej kampanii (CL1 nie pasuje): 70."
],
"unmatched_groups": [
{
"ad_group_id": "191439361170",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "637"
},
{
"ad_group_id": "191439361330",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "191439361370",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "619"
},
{
"ad_group_id": "191439362130",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "64"
},
{
"ad_group_id": "191439362370",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "778"
},
{
"ad_group_id": "191439363010",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "912"
},
{
"ad_group_id": "191439363570",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"allowed": [
"pozostale"
],
"variant": "",
"offer_id": "784"
},
{
"ad_group_id": "193175051941",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "637"
},
{
"ad_group_id": "193175051981",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "193175052141",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "619"
},
{
"ad_group_id": "193175052461",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "778"
},
{
"ad_group_id": "193175052701",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "64"
},
{
"ad_group_id": "193175053101",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "784"
},
{
"ad_group_id": "193175053861",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"allowed": [
"worki"
],
"variant": "",
"offer_id": "912"
},
{
"ad_group_id": "194749203006",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "912"
},
{
"ad_group_id": "194749203046",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "619"
},
{
"ad_group_id": "194749203086",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "64"
},
{
"ad_group_id": "194749203286",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "194749203526",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "637"
},
{
"ad_group_id": "194749203766",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "778"
},
{
"ad_group_id": "194749203806",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"allowed": [
"odkurzacze_akcesoria"
],
"variant": "",
"offer_id": "784"
},
{
"ad_group_id": "196211383109",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "778"
},
{
"ad_group_id": "196211383349",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "64"
},
{
"ad_group_id": "196211383629",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "784"
},
{
"ad_group_id": "196211384389",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "912"
},
{
"ad_group_id": "196211385309",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "637"
},
{
"ad_group_id": "196211385349",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": ""
},
{
"ad_group_id": "196211385509",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"allowed": [
"odkurzacze"
],
"variant": "catch_all",
"offer_id": "619"
},
{
"ad_group_id": "196794680140",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "637"
},
{
"ad_group_id": "196794680380",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "778"
},
{
"ad_group_id": "196794680540",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "196794680620",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "912"
},
{
"ad_group_id": "196794680780",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "619"
},
{
"ad_group_id": "196794680820",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "64"
},
{
"ad_group_id": "196794681340",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"allowed": [
"odkurzacze"
],
"variant": "",
"offer_id": "784"
},
{
"ad_group_id": "196993753336",
"ad_group_name": "deleted01",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "197306992220",
"ad_group_name": "4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "778"
},
{
"ad_group_id": "197306992460",
"ad_group_name": "4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "64"
},
{
"ad_group_id": "197306992980",
"ad_group_name": "Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "637"
},
{
"ad_group_id": "197306993020",
"ad_group_name": "Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": ""
},
{
"ad_group_id": "197306993180",
"ad_group_name": "Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "619"
},
{
"ad_group_id": "197306993660",
"ad_group_name": "Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "784"
},
{
"ad_group_id": "197306994420",
"ad_group_name": "WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT",
"ad_group_status": "PAUSED",
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"allowed": [
"czajniki"
],
"variant": "",
"offer_id": "912"
}
]
}

View File

@@ -0,0 +1,70 @@
# Plan: Synchronizacja kampanii PLA_CL1
Klient: investagd.pl
Utworzono: 2026-05-15T21:30:57+02:00
## Podsumowanie
- Kampanie PLA_CL1: 6
- Produkty z adsPRO: 185
- Grupy reklam obecnie: 353
- Grupy reklam z identyfikatorem produktu: 346
- Do utworzenia: 0
- Do włączenia: 0
- Do wstrzymania: 0
- Do zmiany nazwy: 0
## Uwagi
- Grupy reklam bez dopasowania w adsPRO: 43.
- Produkty z CL4=paused pominiete przy tworzeniu i wlaczaniu grup reklam: 60.
- Grupy reklam w zlym wariancie kampanii (CL4 nie pasuje): 6.
- Grupy reklam w zlej kampanii (CL1 nie pasuje): 70.
## Grupy reklam bez dopasowania w adsPRO
| Kampania | Grupa reklam | Status | Identyfikator produktu |
| --- | --- | --- | --- |
| [PLA_CL1] pozostale | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] pozostale | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] pozostale | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] pozostale | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] pozostale | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] pozostale | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] pozostale | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] worki | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] worki | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] worki | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] worki | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] worki | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] worki | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] worki | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze_akcesoria | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze_akcesoria | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] odkurzacze_akcesoria | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] odkurzacze_akcesoria | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] odkurzacze_akcesoria | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] odkurzacze_akcesoria | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] odkurzacze_akcesoria | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] odkurzacze | catch_all | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] odkurzacze | catch_all | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] odkurzacze | catch_all | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] odkurzacze | catch_all | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze | catch_all | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] odkurzacze | catch_all | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] odkurzacze | catch_all | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] odkurzacze | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] odkurzacze | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] odkurzacze | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] odkurzacze | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |
| [PLA_CL1] odkurzacze | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] odkurzacze | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] odkurzacze | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] czajniki | deleted01 | PAUSED | |
| [PLA_CL1] czajniki | 4X Worki syntetyczne IZ-49.4020 ZELMER Clarris, Cobra 2000, 2010, Elf 321, 323, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 778 |
| [PLA_CL1] czajniki | 4X Worki syntetyczne do odkurzaczy Zelmer Clarris, Cobra 2000, 2010, Elf 321, 322, Antek ZVC, Explorer 1100, Flip, Meteor 2, 400, Odyssey 450, 49.4000 | PAUSED | 64 |
| [PLA_CL1] czajniki | Worki syntetyczne do odkurzacza KARCHER WD3 MOULINEX PROGRESS 10 sztuk | PAUSED | 637 |
| [PLA_CL1] czajniki | Worki papierowe do odkurzacza Zelmer Józek, Kazio, Kazik + filtr | PAUSED | |
| [PLA_CL1] czajniki | Worki do odkurzaczy AEG BEKO GRUNDIG, Samsung; IZ-BAG05S | PAUSED | 619 |
| [PLA_CL1] czajniki | Worki syntetyczne do odkurzaczy Bosch AdvancedVac 20, Bosch UniversalVac 15 | PAUSED | 784 |
| [PLA_CL1] czajniki | WORKI DO ODKURZACZA KARCHER WD2 WD3 SE4001 10SZT | PAUSED | 912 |

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,166 @@
# Plan: Automatyzacja tROAS per grupa reklam PLA
Klient: investagd.pl
Utworzono: 2026-05-15T21:31:31+02:00
## Podsumowanie
- Grupy reklam Shopping z danymi 30 dni: 124
- Kandydaci do podniesienia tROAS: 0
- Kandydaci do rollbacku: 0
- Watchlista bez akcji: 124
- Reguly wiedzy przypisane do zadania: 1
## Zakres zadania
| Obszar | Co sprawdzic |
| --- | --- |
| Zakres | Analizuje tylko aktywne grupy reklam w aktywnych kampaniach Standard Shopping. |
| Dane 30 dni | Liczy realny ROAS grupy reklam z kosztu i wartosci konwersji z ostatnich 30 dni. |
| 100 klikow | Grupy reklam z mniej niz 100 klikami od poczatku trafiaja tylko na watchliste. |
| Trigger 10 konwersji | Podbicie tROAS wymaga co najmniej 10 nowych konwersji wzgledem lokalnego baseline. |
| Stopniowanie | Jedna analiza moze podniesc tROAS grupy reklam maksymalnie o 0.5. |
| Rollback | Jesli po zmianie realny ROAS z 30 dni spada ponizej ustawionego tROAS, plan proponuje przywrocenie poprzedniej wartosci. |
## Watchlista bez akcji
| Kampania | Grupa reklam | Klikniecia all-time | Konwersje 30 dni | Real ROAS | Powod |
| --- | --- | --- | --- | --- | --- |
| [PLA] catch-all | Grupa reklam 1 | 50 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Sprzęgło ślimaka Zelmer 86.1203 do maszynki do mięsa - zamiennik do wszystkich modeli | 42 | 1.00 | 0.56 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | worki do odkurzacza uniwersalne z uchwytem do wycinania + filtr, Typ 1010, pasują do wielu modeli odkurzaczy workowych (5 szt.) IZ-BAG01F | 41 | 1.28 | 1.62 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Trzepaki mieszadełka do miksera Zelmer 481K - komplet do robotów 381, 481, 281, 181 | 31 | 1.00 | 1.39 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Filtr do dzbanka Dafi Classic / Kenwood Anna - 6 szt. wkładów filtrujących wodę | 30 | 2.00 | 1.84 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Meteor Admiral 1010 1020 1030 papierowe 5 szt. + filtry | 29 | 1.45 | 3.23 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Meteor 2 Cobra 2000 2010 - 5 szt papierowe + filtry | 25 | 1.50 | 2.75 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | Odkurzacz przemysłowy Invest Profus III - budowlany warsztatowy do pracy na sucho i mokro 1200W 10L | 18 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Meteor Admiral 1010 1020 1030 papierowe 5 szt. | 17 | 1.00 | 2.01 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Meteor 2 Cobra 2000 Explorer 1100 papierowe 6 szt. zamiennik | 17 | 0.50 | 1.06 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux S-BAG Airmax Expression Philips Mobilo papierowe | 16 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Elf 2 321 322 Elf Bonus Flip - 6 sztuk papierowe | 15 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Orion 1500 Twist Twister papierowe 5 szt. + filtry | 15 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Filtr ochrony silnika Parkside Niteo PNTS 1300 1500 | 13 | 2.00 | 3.91 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Elf 321 322 Elf Bonus Flip papierowe 5 szt. | 12 | 1.00 | 3.78 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka welurowa do odkurzacza Electrolux, Philips - mała końcówka szczelinowa SM 0332 do tapicerki, mebli, zasłon | 10 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Wkłady do pochłaniacza wilgoci 250g uniwersalne - zestaw 10 szt. tabletki absorbujące | 9 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Wąż ssący do odkurzaczy Zelmer 1010.1100 (czarny) | 8 | 1.00 | 4.18 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Trzepaki do miksera Zelmer 371K - komplet do robotów 181, 281, 371, 381 | 8 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Thomas Aqua+ Pet & Family X7 X8 X10 XT syntetyczne 5 szt. | 7 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Cobra Explorer Meteor Wodnik 5szt | 7 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka 419 z naturalnym włosiem do odkurzacza Bosch, Karcher, Moulinex, Siemens | 6 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe + filtry | 5 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do odkurzacza Zelmer 3000 5500 Magnat Solaris Jupiter 5szt | 5 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do KARCHER 6.904-333.0, T 9/1,T10/1, IZ-K16S 10 sztuk | 4 | 1.57 | 8.39 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka duża do odkurzacza Bosch Siemens Moulinex SE 0735 | 4 | 1.00 | 6.73 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Rura teleskopowa do odkurzacza Zelmer Electrolux 111.6000 | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała z włosiem do odkurzacza Zelmer | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Uniwersalny zestaw końcówek do odkurzaczy 4szt | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 5X Worki do odkurzacza Zelmer XS 01Z011 + filtry, IZ-XS2F | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Amica Ora VM1032-VM1035 12szt | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Karcher T 7/1 T 9/1 T 10/1 - papierowe 5 szt | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Elf 321 322 Flip 5 szt + filtry, papierowe, zamiennik IZ-3210080 | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne IZ-BAG05SPCZ do odkurzacza AMICA Surazo VM 1055, Ora VM 1032, SAMSUNG SC5480 SC5660, BEKO VCC 5325 AR, IZ-BAG05SPCZ 5szt | 4 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr 5000.0050K HEPA 13 do odkurzaczy Zelmer Odyssey, Explorer, Syrius, Cobra, Cobra II Silent, Clarris, Clarris Twix, Magnat, Jupiter, Solaris, Sola | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Philips FC6409 FC6408 FC6170 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka duża do odkurzacza Electrolux, Philips; SE 0732 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka dwurzędowa 510 ze zgarniaczem śr. wew. 32mm do odkurzacza Electrolux, Philips | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała ze zgarniaczem do odkurzacza Electrolux, Philips SM 0232 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka 32 mm do odkurzacza Zelmer Aquawelt Aquario Aeromaster Jupiter Solaris SE14ZEL - końcówka ssąca 2w1 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Nóż nożyk dwustronny do maszynki Zelmer z komorą 5 - kod 86.1009 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Parkside PNTS 1300 1400 syntetyczne 5 szt. - zamiennik Lidl Einhell | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Samsung VP99; IZ-VP99 | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do odkurzacza Zelmer Józek Kazio Kazik + filtr | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP | 3 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Komplet filtrów wlot i wylot do odkurzacza Electrolux Mondo; IZ-WWE3 | 2 | 1.00 | 70.26 | mniej niz 100 klikow od poczatku - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr FK-03 do odkurzacza Karcher 2501, 2701, 2801, SE 2001, SE5.100, 2501 TE, A2701, 2801 plus, SE 3001, 2601, 2701 TE, A2801, 3001, SE6.100, 2601 pl | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr FK-10 do odkurzacza EINHELL: AFF 18, BT-VC 500 PARKSIDE: PAS 500A1, B1, C1, C2; PARK18/8C PARKSIDE 4711310437 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtry do odkurzacza FESTOOL CT, CTL, CTM 11, 22, 33, 44/45 Ventos 25/35, Karcher NT351, NT351/ECO, NT14/1; FK-17-2X | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Rura teleskopowa z tworzywa do odkurzaczy ZELMER; RTP 0132 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Rura teleskopowa z tworzywa średnica wewnętrzna 35 mm | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała z naturalnym włosiem do odkurzacza Electrolux, Philips typ 352 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka ze zgarniaczem typ 168 do odkurzacza ZELMER | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawkoszczotka przełączalna do odkurzaczy Zelmer 32mm | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 5X Worki papierowe do odkurzacza Zelmer Orion, Cobra II Silent 2500, Orion 1500, 1600, Twist, Twister | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Electrolux Cyclone Power Filio - papierowe 5 szt IZ-E13 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Parkside PNTS 1250 1300 1400 1500 - 5 szt + filtr (kompat. Niteo Tools IPX 4, Blaupunkt WD4000) IZ-IPX4 | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Profi Europe Masterprofi Twist Profi 1 Profi 3 - 5 szt | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Edek - papierowe 5 szt | 2 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Duża ssawka 415 z naturalnym włosiem do odkurzacza Zelmer | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Karcher NT 65/2 Eco Tc, NT 65/2 Eco, NT 72/2 Eco Tc; FK-04 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr piankowy SC47 do odkurzacza Samsung SC47J0, SC4320, SC4325,VCC4320S3B/XEO, VCC4325S3K/XEO, VCC4325S3R/XEO | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr zmywalny do odkurzacza Karcher WD 2, WD 3, NT/27, SE 4001, SE 4002, MV 2, MV3, K 2000; FK-02/P | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Mała ssawka z welurem do tapicerki śr. wew. 32 mm do odkurzacza Hoover, De Longhi, Privileg, Philips, Electrolux, Rowenta, SE 0932 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Mała ssawka z welurem do tapicerki śr. wew. 35 mm do odkurzacza Bosch, Karcher, Moulinex, Siemens, Amica, Samsung, Profi, SE 0935 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka duża 49 P z dwoma zgarniaczami typ 170 do odkurzacza ZELMER | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka mała 353 z naturalnym włosiem do odkurzacza Bosch, Siemens, Moulinex | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka okrągła z naturalnym włosiem 32 mm do odkurzaczy Zelmer , 047 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka szczelinowa do odkurzacza Electrolux, Philips | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka z włosem typ 800 do odkurzacza ZELMER | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka z naturalnym włosiem ELECTROLUX AEG PHILIPS KARCHER ZELMER | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Szczotka okrągła z włosem typ 046 do odkurzacza ZELMER | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Uniwersalne filtry do odkurzaczy wlot i wylot; IZ-WWU | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Wkład zapachowy do odkurzaczy (granulat) o zapachu morskim AROMA | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Nożyk jednostronny do maszynki ZELMER z komorą 8; kod 86.3107 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | 5X Worki syntetyczne do odkurzaczy ZELMER Magnat 3000, Jupiter 4000, Maxim, Solaris Twix | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki ELDOM OS 1200, HOLDEN Maximo OD 30, INVEST Galactico, Furio, MPM Focus, PHILIPS FC 8046, 8334, 8344, 8348; IZ-Y19 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do KARCHER WD2 PLUS WD3 SE4001 SE4002 IZ-K22SP PO | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Amica Nimis Qubis Universis Ventis IZ-AM2 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Wetrok Monovac 6 Plus - 5 szt IZ-WK2 | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Meteor 2 Cobra Aquawelt Voyager - papierowe 5 szt | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio + filtr | 1 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | ODKURZACZ WORKOWY INVEST GALACTICO 850 W | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ PRZEMYSŁOWY INVEST PROFUS III 1200W 10L 2 sztuki | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze | catch_all | ODKURZACZ WORKOWY INVEST GALACTICO 850 W 2 sztuki | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | 1X Filtr do odkurzacza Dyson V11 SV14 V15 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr HEPA 13 IZ-FHE2 do odkurzacza ELECTROLUX Airmax, Clario, Ergo Space, Ultra Silencer | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr HEPA oraz filtr stożkowy do odkurzaczy Dyson modeli DC58, DC59, DC61, DC62, V6 i V7 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr S Hepa IF-33 do odkurzacza Invest FURIO, FURIO ECO | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Karcher NT 35/1 Eco/Te/M, NT 45/1 Eco/Te/M, NT 55/1 Eco/Te/M; FK-01 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr do odkurzacza Profi 3; FK-21 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Filtr piankowy typ SC43 do odkurzacza Samsung SC43 VC43 VCC43 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | SSAWKA SZCZELINOWA DO ODKURZACZY KARCHER BOSCH SAMSUNG ROWENTA | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka 418 z syntetycznym włosiem do odkurzacza Bosch, Karcher, Moulinex, Siemens | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka 800 z dwoma zgarniaczami typ 218 do odkurzacza ZELMER | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka okrągła z naturalnym włosiem 32 mm do odkurzaczy Electrolux, 049 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka szczelinowa długa typ 056 do odkurzacza ZELMER | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka szczelinowa giętka do odkurzacza Zelmer | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka z włosem typ 1020 do odkurzacza ZELMER | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawka średnia gładka 084 do odkurzacza ZELMER | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka SE1432 do odkurzaczy Electrolux... | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka SE1435 do odkurzaczy Bosch, Panasonic, Siemens... | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka SE1635 do odkurzaczy Bosch, Samsung, LG... | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawko-szczotka z naturalnym włosiem do odkurzaczy ELECTROLUX AEG PHILIPS DN32; 050-003 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Ssawkoszczotka na kółkach do odkurzacza ZELMER; 449.0000P | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Szczotka parkietowa na kółkach do odkurzaczy ZELMER (czarna) 49.9500P | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Uniwersalny zestaw końcówek do odkurzaczy 4szt + Worek na akcesoria | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] odkurzacze_akcesoria | Worki do odkurzaczy DUO 01D011, 01D012; IZ-D011 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Filtr węglowy do okapów kuchennych IZ-FW2 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Nożyk do maszynki do mięsa Zelmer komora 5 - 86.1007 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | Sitko o średnicy otworów 8 mm do maszynki ZELMER z komorą 5 sitko 86.1242 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] pozostale | UNIWERSALNY WKŁAD DO POCHŁANIACZA WILGOCI 250G | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Blaupunkt VCB201 Bomann BS9010 BS9011 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Magnat 3000 5500 Solaris Jupiter papierowe 6 szt. | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki do odkurzacza Zelmer Sławek ZVC 361 ZVC 362 5sztuk | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do MIELE Aquamarin, Automatic, Senator LX; IZ-M1/M4 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki papierowe do Rowenta BP 61 Enduro, Bully, RB 50 - RB 52, RB 500; IZ-R4 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne do ROWENTA Silence Force, X-Treme Power; IZ-R16S | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne do ZELMER Multipro 01Z013 | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
| [PLA_CL1] worki | Worki syntetyczne do odkurzacza AMICA Surazo VM 1055, Ora VM 1032, SAMSUNG SC5480 SC5660, BEKO VCC 5325 AR, IZ-BAG05SPCZ 4szt | 0 | 0.00 | 0.00 | mniej niz 100 klikow od poczatku i niski albo zerowy ROAS - obserwuj, bez akcji |
## Reguly z bazy wiedzy
| ID | Temat | Rekomendacja | Ryzyko |
| --- | --- | --- | --- |
| smart_bidding_sequential_budget_and_target_changes | strategie_stawek | Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana. | Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji. |
## Poza zakresem tego zadania
- Performance Max
- Search
- kampanie Shopping bez grup reklam
- automatyczne wdrozenie bez akceptacji uzytkownika
- pauzowanie grup reklam z niskim albo zerowym ROAS

View File

@@ -0,0 +1,215 @@
{
"created_at": "2026-05-15T21:32:47+02:00",
"client": "investagd.pl",
"task": "optimize_product_titles",
"task_name": "Optymalizacja tytulow produktow",
"products": [
{
"offer_id": "1041",
"default_name": "Odkurzacz workowy Profi 1.2.1",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 113,
"impressions": 4813,
"cost": 183.32
},
{
"offer_id": "569",
"default_name": "Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny)",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 46,
"impressions": 1716,
"cost": 43.43
},
{
"offer_id": "1068",
"default_name": "ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 44,
"impressions": 2360,
"cost": 67.09
},
{
"offer_id": "1045",
"default_name": "Odkurzacz workowy Profi 11.5",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 43,
"impressions": 4511,
"cost": 74.34
},
{
"offer_id": "666",
"default_name": "Wąż dopływowy 3,0 do pralki / zmywarki - 3 m",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 38,
"impressions": 1268,
"cost": 16.39
},
{
"offer_id": "835",
"default_name": "Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 37,
"impressions": 1345,
"cost": 24.18
},
{
"offer_id": "178",
"default_name": "Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 36,
"impressions": 1551,
"cost": 41.07
},
{
"offer_id": "729",
"default_name": "Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 36,
"impressions": 935,
"cost": 30.6
},
{
"offer_id": "323",
"default_name": "Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 34,
"impressions": 2299,
"cost": 21.22
},
{
"offer_id": "1083",
"default_name": "4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio",
"custom_title": null,
"title_changed": false,
"google_product_category": null,
"needs_title": true,
"needs_category": true,
"clicks": 33,
"impressions": 1357,
"cost": 41.25
}
],
"title_changes": [
{
"offer_id": "1041",
"field": "title",
"current_value": "Odkurzacz workowy Profi 1.2.1",
"target_value": "Odkurzacz workowy Profi 1.2.1 do domu i biura",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "569",
"field": "title",
"current_value": "Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny)",
"target_value": "Wąż ssący Zelmer 2000.1300 czarny do odkurzacza",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1068",
"field": "title",
"current_value": "ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T",
"target_value": "Odkurzacz workowy Zelmer Antek ZVC3501T",
"reason": "brak zoptymalizowanego tytulu lub tytul wymaga normalizacji"
},
{
"offer_id": "1045",
"field": "title",
"current_value": "Odkurzacz workowy Profi 11.5",
"target_value": "Odkurzacz workowy Profi 11.5 do domu i biura",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "666",
"field": "title",
"current_value": "Wąż dopływowy 3,0 do pralki / zmywarki - 3 m",
"target_value": "Wąż dopływowy 3 m do pralki i zmywarki",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "835",
"field": "title",
"current_value": "Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481",
"target_value": "Nasadka miksująca Zelmer 171.2000Z do robotów 371 281 381 481",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "178",
"field": "title",
"current_value": "Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S",
"target_value": "Worki do odkurzacza Electrolux Philips IZ-E5 PH5S",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "729",
"field": "title",
"current_value": "Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt",
"target_value": "Worki papierowe Zelmer Adaś Franek Olek Kuba ZVC 333 334 335 5 szt.",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "323",
"field": "title",
"current_value": "Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP",
"target_value": "Worki syntetyczne Bosch Activa Alpha Siemens Super L IZ-S11SP",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1083",
"field": "title",
"current_value": "4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio",
"target_value": "Worki syntetyczne Zelmer Józek Kazik Kazio 4 szt.",
"reason": "brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu",
"requires_agent_decision": true
}
],
"category_changes": [],
"unit_pricing_changes": [],
"skipped": [],
"warnings": [
"Czesc tytulow wymaga decyzji agenta AI; skrypt nie przepisuje tytulu bazowego jako optymalizacji."
]
}

View File

@@ -0,0 +1,31 @@
# Plan: Optymalizacja tytulow produktow
Klient: investagd.pl
Utworzono: 2026-05-15T21:32:47+02:00
## Podsumowanie
- Produkty z adsPRO: 10
- Tytuly do zmiany: 10
- Kategorie do uzupelnienia: 0
- Unit pricing do zmiany: 0
- Pominiete: 0
## Uwagi
- Czesc tytulow wymaga decyzji agenta AI; skrypt nie przepisuje tytulu bazowego jako optymalizacji.
## Tytuly do decyzji lub zmiany
| Produkt | Obecnie | Docelowo | Powod |
| --- | --- | --- | --- |
| 1041 | Odkurzacz workowy Profi 1.2.1 | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 569 | Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny) | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 1068 | ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T | Odkurzacz Workowy Zelmer Antek Zvc3501T | brak zoptymalizowanego tytulu lub tytul wymaga normalizacji |
| 1045 | Odkurzacz workowy Profi 11.5 | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 666 | Wąż dopływowy 3,0 do pralki / zmywarki - 3 m | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 835 | Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481 | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 178 | Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 729 | Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 323 | Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |
| 1083 | 4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio | | brak zoptymalizowanego tytulu; tytul wybiera agent AI po analizie produktu |

View File

@@ -0,0 +1,216 @@
{
"created_at": "2026-05-15T21:34:55+02:00",
"client": "investagd.pl",
"task": "optimize_product_categories",
"task_name": "Optymalizacja kategorii Google",
"products": [
{
"offer_id": "1041",
"default_name": "Odkurzacz workowy Profi 1.2.1",
"custom_title": "Odkurzacz workowy Profi 1.2.1 do domu i biura",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 113,
"impressions": 4813,
"cost": 183.32
},
{
"offer_id": "569",
"default_name": "Wąż ssący do odkurzaczy Zelmer 2000.1300 (czarny)",
"custom_title": "Wąż ssący Zelmer 2000.1300 czarny do odkurzacza",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 46,
"impressions": 1716,
"cost": 43.43
},
{
"offer_id": "1068",
"default_name": "ODKURZACZ WORKOWY ZELMER ANTEK ZVC3501T",
"custom_title": "Odkurzacz workowy Zelmer Antek ZVC3501T",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 44,
"impressions": 2360,
"cost": 67.09
},
{
"offer_id": "1045",
"default_name": "Odkurzacz workowy Profi 11.5",
"custom_title": "Odkurzacz workowy Profi 11.5 do domu i biura",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 43,
"impressions": 4511,
"cost": 74.34
},
{
"offer_id": "666",
"default_name": "Wąż dopływowy 3,0 do pralki / zmywarki - 3 m",
"custom_title": "Wąż dopływowy 3 m do pralki i zmywarki",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 38,
"impressions": 1268,
"cost": 16.39
},
{
"offer_id": "835",
"default_name": "Nasadka miksująca 171.2000Z do robotów Zelmer 371, 281, 381, 481",
"custom_title": "Nasadka miksująca Zelmer 171.2000Z do robotów 371 281 381 481",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 37,
"impressions": 1345,
"cost": 24.18
},
{
"offer_id": "178",
"default_name": "Worki do odkurzacza Electrolux / Philips IZ-E5/PH5S",
"custom_title": "Worki do odkurzacza Electrolux Philips IZ-E5 PH5S",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 36,
"impressions": 1551,
"cost": 41.07
},
{
"offer_id": "729",
"default_name": "Worki papierowe do odkurzacza Zelmer Adaś, Franek, Olek, Kuba ZVC 333, Kuba ZVC 334, Kuba ZVC 335 5szt",
"custom_title": "Worki papierowe Zelmer Adaś Franek Olek Kuba ZVC 333 334 335 5 szt.",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 36,
"impressions": 935,
"cost": 30.6
},
{
"offer_id": "323",
"default_name": "Worki syntetyczne BOSCH Activa, Alpha, SIEMENS Super L; IZ-S11SP",
"custom_title": "Worki syntetyczne Bosch Activa Alpha Siemens Super L IZ-S11SP",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 34,
"impressions": 2299,
"cost": 21.22
},
{
"offer_id": "1083",
"default_name": "4x Worki syntetyczne do odkurzacza Zelmer Józek, Kazik, Kazio",
"custom_title": "Worki syntetyczne Zelmer Józek Kazik Kazio 4 szt.",
"title_changed": true,
"google_product_category": null,
"needs_title": false,
"needs_category": true,
"clicks": 33,
"impressions": 1357,
"cost": 41.25
}
],
"title_changes": [],
"category_changes": [
{
"offer_id": "1041",
"field": "google_product_category",
"current_value": "",
"target_value": "Dom i ogród > Sprzęt AGD > Odkurzacze",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "569",
"field": "google_product_category",
"current_value": "",
"target_value": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1068",
"field": "google_product_category",
"current_value": "",
"target_value": "Dom i ogród > Sprzęt AGD > Odkurzacze",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1045",
"field": "google_product_category",
"current_value": "",
"target_value": "Dom i ogród > Sprzęt AGD > Odkurzacze",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "666",
"field": "google_product_category",
"current_value": "",
"target_value": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do pralek i suszarek",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "835",
"field": "google_product_category",
"current_value": "",
"target_value": "Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do mikserów i blenderów",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "178",
"field": "google_product_category",
"current_value": "",
"target_value": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "729",
"field": "google_product_category",
"current_value": "",
"target_value": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "323",
"field": "google_product_category",
"current_value": "",
"target_value": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
},
{
"offer_id": "1083",
"field": "google_product_category",
"current_value": "",
"target_value": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy",
"reason": "brak kategorii Google; kategorie wybiera agent AI po analizie produktu",
"requires_agent_decision": true
}
],
"unit_pricing_changes": [],
"skipped": [],
"warnings": [
"Kategorie Google wybiera agent AI; skrypt nie zgaduje ich automatycznie."
]
}

View File

@@ -0,0 +1,31 @@
# Plan: Optymalizacja kategorii Google
Klient: investagd.pl
Utworzono: 2026-05-15T21:34:55+02:00
## Podsumowanie
- Produkty z adsPRO: 10
- Tytuly do zmiany: 0
- Kategorie do uzupelnienia: 10
- Unit pricing do zmiany: 0
- Pominiete: 0
## Uwagi
- Kategorie Google wybiera agent AI; skrypt nie zgaduje ich automatycznie.
## Kategorie Google do decyzji agenta AI
| Produkt | Obecnie | Decyzja agenta AI | Powod |
| --- | --- | --- | --- |
| 1041 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 569 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 1068 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 1045 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 666 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 835 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 178 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 729 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 323 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |
| 1083 | | | brak kategorii Google; kategorie wybiera agent AI po analizie produktu |

View File

@@ -0,0 +1,179 @@
{
"created_at": "2026-05-15T21:39:58+02:00",
"client": "investagd.pl",
"task": "fill_product_unit_pricing",
"task_name": "Uzupelnienie unit pricing",
"products": [
{
"product_id": 24251,
"offer_id": "387",
"default_name": "Zelmer zestaw trzepaków do miksera ręcznego do modeli 181, 281, 371, 381",
"custom_title": "Trzepaki do miksera Zelmer 371K - komplet do robotów 181, 281, 371, 381",
"google_product_category": "Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do mikserów i blenderów",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 207,
"clicks_all_time": 596
},
{
"product_id": 24276,
"offer_id": "397",
"default_name": "Zelmer sprzęgło napędowe ślimaka 86.1203 do maszynki do mielenia mięsa",
"custom_title": "Sprzęgło ślimaka Zelmer 86.1203 do maszynki do mięsa - zamiennik do wszystkich modeli",
"google_product_category": "Dom i ogród > Kuchnia i jadalnia > Akcesoria do sprzętów kuchennych > Akcesoria do rozdrabniaczy do żywności",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 41,
"clicks_all_time": 126
},
{
"product_id": 24182,
"offer_id": "16",
"default_name": "Worki ELECTROLUX E 44, E 49, Mondo E 49, Mondo II, Mondo Z 1100 - 1199 + filtry; IZ-E3F",
"custom_title": "Worki do odkurzacza Electrolux Mondo E44 E49 Mondo II Z 1100-1199 papierowe + filtry",
"google_product_category": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 61,
"clicks_all_time": 124
},
{
"product_id": 24051,
"offer_id": "27",
"default_name": "Worki uniwersalne z uchwytem do wycinania Typ 1010 + filtr; IZ-BAG01F",
"custom_title": "worki do odkurzacza uniwersalne z uchwytem do wycinania + filtr, Typ 1010, pasują do wielu modeli odkurzaczy workowych (5 szt.) IZ-BAG01F",
"google_product_category": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy > Worki do odkurzaczy",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 81,
"clicks_all_time": 118
},
{
"product_id": 24354,
"offer_id": "1041",
"default_name": "Odkurzacz workowy Profi 1.2.1",
"custom_title": "Odkurzacz workowy Profi 1.2.1 do domu i biura",
"google_product_category": "Dom i ogród > Sprzęt AGD > Odkurzacze",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 112,
"clicks_all_time": 113
},
{
"product_id": 24047,
"offer_id": "871",
"default_name": "5 SZT WORKI DO LIDL PARKSIDE PNTS 1300 1400 IZ-L4S",
"custom_title": "Worki do odkurzacza Parkside PNTS 1300 1400 syntetyczne 5 szt. - zamiennik Lidl Einhell",
"google_product_category": "4537",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 7,
"clicks_all_time": 112
},
{
"product_id": 24069,
"offer_id": "5",
"default_name": "5X Worki papierowe do odkurzacza Zelmer Meteor 2, Cobra 2000, 2010 + filtry IZ-2000.0280",
"custom_title": "Worki do odkurzacza Zelmer Meteor 2 Cobra 2000 2010 - 5 szt papierowe + filtry",
"google_product_category": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 49,
"clicks_all_time": 110
},
{
"product_id": 24177,
"offer_id": "1090",
"default_name": "Worki papierowe do odkurzacza Zelmer 6 sztuk do Cobra 2000, Explorer 1100, Meteor 2",
"custom_title": "Worki do odkurzacza Zelmer Meteor 2 Cobra 2000 Explorer 1100 papierowe 6 szt. zamiennik",
"google_product_category": "4537",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 32,
"clicks_all_time": 109
},
{
"product_id": 24046,
"offer_id": "808",
"default_name": "Ssawka do odkurzacza mała z welurem 32 mm zamiennik do Zelmer",
"custom_title": "Ssawka do odkurzacza Zelmer z welurem 32mm - mała ssawka do mebli i tapicerki",
"google_product_category": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 25,
"clicks_all_time": 94
},
{
"product_id": 24120,
"offer_id": "10",
"default_name": "5X Worki do odkurzacza Zelmer Elf 321, 322, Elf Bonus, Flip, IZ-321.0081",
"custom_title": "Worki do odkurzacza Zelmer Elf 321 322 Elf Bonus Flip papierowe 5 szt.",
"google_product_category": "Dom i ogród > Akcesoria do sprzętu AGD > Akcesoria do odkurzaczy",
"unit_pricing_measure": "",
"unit_pricing_base_measure": "",
"clicks_30": 47,
"clicks_all_time": 93
}
],
"title_changes": [],
"category_changes": [],
"unit_pricing_changes": [
{
"offer_id": "871",
"field": "unit_pricing",
"title": "5 SZT WORKI DO LIDL PARKSIDE PNTS 1300 1400 IZ-L4S",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "5 szt",
"unit_pricing_base_measure": "1 szt",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
},
{
"offer_id": "1090",
"field": "unit_pricing",
"title": "Worki papierowe do odkurzacza Zelmer 6 sztuk do Cobra 2000, Explorer 1100, Meteor 2",
"current_unit_pricing_measure": "",
"current_unit_pricing_base_measure": "",
"unit_pricing_measure": "6 szt",
"unit_pricing_base_measure": "1 szt",
"reason": "brak unit pricing; wartosc wyliczona z nazwy produktu"
}
],
"skipped": [
{
"offer_id": "387",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "397",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "16",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "27",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "1041",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "5",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "808",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
},
{
"offer_id": "10",
"reason": "brak jednoznacznego unit pricing w nazwie produktu"
}
],
"warnings": [
"Unit pricing zostanie zapisany w adsPRO dopiero po akceptacji planu."
]
}

View File

@@ -0,0 +1,36 @@
# Plan: Uzupelnienie unit pricing
Klient: investagd.pl
Utworzono: 2026-05-15T21:39:58+02:00
## Podsumowanie
- Produkty z adsPRO: 10
- Tytuly do zmiany: 0
- Kategorie do uzupelnienia: 0
- Unit pricing do zmiany: 2
- Pominiete: 8
## Uwagi
- Unit pricing zostanie zapisany w adsPRO dopiero po akceptacji planu.
## Unit pricing do zmiany
| Produkt | Measure | Base measure | Powod |
| --- | --- | --- | --- |
| 871 | 5 szt | 1 szt | brak unit pricing; wartosc wyliczona z nazwy produktu |
| 1090 | 6 szt | 1 szt | brak unit pricing; wartosc wyliczona z nazwy produktu |
## Pominiete
| Produkt | Powod |
| --- | --- |
| 387 | brak jednoznacznego unit pricing w nazwie produktu |
| 397 | brak jednoznacznego unit pricing w nazwie produktu |
| 16 | brak jednoznacznego unit pricing w nazwie produktu |
| 27 | brak jednoznacznego unit pricing w nazwie produktu |
| 1041 | brak jednoznacznego unit pricing w nazwie produktu |
| 5 | brak jednoznacznego unit pricing w nazwie produktu |
| 808 | brak jednoznacznego unit pricing w nazwie produktu |
| 10 | brak jednoznacznego unit pricing w nazwie produktu |

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
# Plan: Sprawdzenie dostepnosci produktow
Klient: investagd.pl
Utworzono: 2026-05-15T21:43:21+02:00
## Podsumowanie
- Produkty sprawdzone: 448
- Dostepne: 306
- Niedostepne reklamowo: 138
- Niedopasowane: 4
- Do ustawienia CL4=paused: 1
## Uwagi
- Produkty niedopasowane albo bez jednoznacznego odczytu: 4.
- Produkty niedostepne reklamowo: 138.
## Zmiany do wdrozenia
| Produkt | Obecne CL4 | Docelowe CL4 | Powod | URL |
| --- | --- | --- | --- | --- |
| 1097 | | paused | brak aktywnego przycisku Dodaj do koszyka | https://www.investagd.pl/x-p-1097.html |

View File

@@ -0,0 +1,315 @@
{
"created_at": "2026-05-15T21:44:32+02:00",
"client": "investagd.pl",
"task": "check_budget_usage",
"task_name": "Sprawdzenie wykorzystania budzetu",
"currency_code": "PLN",
"campaigns": [
{
"campaign_id": "23825825449",
"campaign_name": "[PLA_CL1] pozostale",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15557732820",
"budget_name": "[PLA_CL1] pozostale",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 15000000,
"expected_7d_micros": 105000000,
"cost_7d_micros": 131570000,
"avg_daily_cost_micros": 18795714,
"usage_percent": 125.3,
"pacing_label": "blisko limitu",
"conversions": 6.0,
"conversions_value": 206.84,
"roas": 1.57,
"search_impression_share": 0.4117296222664016,
"search_budget_lost_impression_share": 0.5882703777335984,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "srednie",
"action": "sprawdz mozliwosc podniesienia budżetu",
"reason": "kampania wykorzystuje budzet i traci czesc wyswietlen przez budzet",
"suggested_budget_change_percent": 30,
"current_daily_budget_micros": 15000000,
"recommended_daily_budget_micros": 19500000,
"budget_delta_micros": 4500000,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23797182612",
"campaign_name": "[PLA_CL1] odkurzacze_akcesoria",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15548480095",
"budget_name": "[PLA_CL1] odkurzacze_akcesoria",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 15000000,
"expected_7d_micros": 105000000,
"cost_7d_micros": 119230000,
"avg_daily_cost_micros": 17032857,
"usage_percent": 113.6,
"pacing_label": "blisko limitu",
"conversions": 4.0,
"conversions_value": 189.49,
"roas": 1.59,
"search_impression_share": 0.5420177636073787,
"search_budget_lost_impression_share": 0.45798223639262126,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "srednie",
"action": "sprawdz mozliwosc podniesienia budżetu",
"reason": "kampania wykorzystuje budzet i traci czesc wyswietlen przez budzet",
"suggested_budget_change_percent": 25,
"current_daily_budget_micros": 15000000,
"recommended_daily_budget_micros": 18750000,
"budget_delta_micros": 3750000,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23797198440",
"campaign_name": "[PLA_CL1] odkurzacze",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15543226950",
"budget_name": "[PLA_CL1] odkurzacze",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 60000000,
"expected_7d_micros": 420000000,
"cost_7d_micros": 412370000,
"avg_daily_cost_micros": 58910000,
"usage_percent": 98.2,
"pacing_label": "blisko limitu",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0.0,
"search_impression_share": 0.5640596682001952,
"search_budget_lost_impression_share": 0.43594033179980485,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "ostroznie",
"action": "nie podnoś budżetu bez oceny rentowności",
"reason": "widac utrate przez budzet, ale brakuje wystarczajacej wartosci konwersji",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 60000000,
"recommended_daily_budget_micros": 60000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23825822059",
"campaign_name": "[PLA_CL1] worki",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15557730201",
"budget_name": "[PLA_CL1] worki",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 40000000,
"expected_7d_micros": 280000000,
"cost_7d_micros": 229520000,
"avg_daily_cost_micros": 32788571,
"usage_percent": 82.0,
"pacing_label": "w normie",
"conversions": 5.07,
"conversions_value": 319.79,
"roas": 1.39,
"search_impression_share": 0.5347182697780307,
"search_budget_lost_impression_share": 0.4652817302219693,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "ok",
"action": "bez zmiany budzetu",
"reason": "brak jednoczesnego sygnalu wysokiego wykorzystania i utraty przez budzet",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 40000000,
"recommended_daily_budget_micros": 40000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23836770153",
"campaign_name": "[PLA] catch-all",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15578507680",
"budget_name": "[PLA] catch-all",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 10000000,
"expected_7d_micros": 70000000,
"cost_7d_micros": 36670000,
"avg_daily_cost_micros": 5238571,
"usage_percent": 52.4,
"pacing_label": "w normie",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0.0,
"search_impression_share": 0.4660633484162896,
"search_budget_lost_impression_share": 0.5339366515837104,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "ok",
"action": "bez zmiany budzetu",
"reason": "brak jednoczesnego sygnalu wysokiego wykorzystania i utraty przez budzet",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 10000000,
"recommended_daily_budget_micros": 10000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "22934868198",
"campaign_name": "[Search] brand",
"status": "ENABLED",
"channel_type": "SEARCH",
"budget_id": "14870361809",
"budget_name": "[Search] brand",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 30000000,
"expected_7d_micros": 210000000,
"cost_7d_micros": 48599836,
"avg_daily_cost_micros": 6942833,
"usage_percent": 23.1,
"pacing_label": "niskie wykorzystanie",
"conversions": 3.0,
"conversions_value": 236.95,
"roas": 4.88,
"search_impression_share": 0.5238095238095238,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.47619047619047616,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "ok",
"action": "bez zmiany budzetu",
"reason": "brak jednoczesnego sygnalu wysokiego wykorzystania i utraty przez budzet",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 30000000,
"recommended_daily_budget_micros": 30000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23846238222",
"campaign_name": "[PLA_CL1] czajniki",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15575442944",
"budget_name": "[PLA_CL1] czajniki",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 20000000,
"expected_7d_micros": 140000000,
"cost_7d_micros": 0,
"avg_daily_cost_micros": 0,
"usage_percent": 0.0,
"pacing_label": "brak wydatkow",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0,
"search_impression_share": 0.0,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "do sprawdzenia",
"action": "sprawdz brak wydatkow",
"reason": "aktywna kampania nie wydala srodkow w ostatnich 7 dniach",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 20000000,
"recommended_daily_budget_micros": 20000000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
},
{
"campaign_id": "23846225484",
"campaign_name": "[PLA_CL1] odkurzacze | catch_all",
"status": "ENABLED",
"channel_type": "SHOPPING",
"budget_id": "15580076781",
"budget_name": "[PLA_CL1] odkurzacze | catch_all",
"budget_delivery_method": "STANDARD",
"daily_budget_micros": 10000,
"expected_7d_micros": 70000,
"cost_7d_micros": 0,
"avg_daily_cost_micros": 0,
"usage_percent": 0.0,
"pacing_label": "brak wydatkow",
"conversions": 0.0,
"conversions_value": 0.0,
"roas": 0,
"search_impression_share": 0.0,
"search_budget_lost_impression_share": 0.0,
"search_rank_lost_impression_share": 0.0,
"days_since_budget_change": null,
"budget_recommendation": {
"level": "do sprawdzenia",
"action": "sprawdz brak wydatkow",
"reason": "aktywna kampania nie wydala srodkow w ostatnich 7 dniach",
"suggested_budget_change_percent": 0,
"current_daily_budget_micros": 10000,
"recommended_daily_budget_micros": 10000,
"budget_delta_micros": 0,
"days_since_budget_change": null,
"min_days_between_budget_changes": 7
}
}
],
"scope": [
{
"area": "Wydatki 7 dni",
"check": "Porownaj koszt z ostatnich 7 dni z oczekiwanym wydatkiem wynikajacym z budzetu dziennego."
},
{
"area": "Pacing",
"check": "Oznacz kampanie, ktore wydaja bardzo malo albo prawie caly tygodniowy limit budzetu."
},
{
"area": "Utrata wyswietlania przez budzet",
"check": "Polacz wykorzystanie budzetu z utrata udzialu w wyswietleniach przez budzet i rentownoscia kampanii."
},
{
"area": "Brak wydatkow",
"check": "Wskaz aktywne kampanie z budzetem, ktore nie wydaly srodkow w ostatnich 7 dniach."
},
{
"area": "Budzet wspoldzielony",
"check": "Pokaz nazwe budzetu, zeby latwiej wychwycic kampanie korzystajace z tego samego budzetu."
}
],
"out_of_scope": [
"zmiany stawek i strategii ustalania stawek",
"ocena Docelowego ROAS albo Docelowego CPA",
"analiza zapytan, wykluczen i jakosci ruchu",
"wdrazanie zmian budzetowych na koncie"
],
"knowledge_rules": [
{
"id": "smart_bidding_sequential_budget_and_target_changes",
"topic": "strategie_stawek",
"rule_type": "warning",
"condition": "Plan zaklada zmiane budzetu albo celu Smart Bidding, szczegolnie gdy zmiana jest duza albo nastepuje krotko po innej zmianie budzetu, strategii lub celu.",
"recommendation": "Zmiany budzetow i celow Smart Bidding wprowadzaj sekwencyjnie. Nie zmieniaj jednoczesnie budzetu i Docelowego ROAS albo Docelowego CPA, jesli nie jest to swiadoma decyzja. Duze zmiany oznaczaj jako wyzsze ryzyko uczenia algorytmu i rekomenduj obserwacje wynikow przed kolejna zmiana.",
"risk": "Jednoczesne albo zbyt duze zmiany moga uruchomic niestabilny okres uczenia, utrudnic ocene przyczyny zmian wynikow i doprowadzic do nadmiernego wydawania budzetu albo utraty wolumenu konwersji.",
"source": "manual"
}
],
"warnings": [],
"budget_changes": [],
"changes": []
}

Some files were not shown because too many files have changed in this diff Show More