Reporting reklamních dat - datový model

FotoŠkoda × Data Club · návrh k diskuzi

Datový model

Dodávka pěti denně aktualizovaných tabulek do vašeho BigQuery (náklady kampaní, příchody z reklam, mapa identit, objednávky, položky objednávek) včetně specifikace, jak je spojit. Výsledný report (ROAS, náklady na objednávku) staví váš tým nebo agentura nad dodanými daty.

Co budeme dodávat - 5 tabulek

1 · ads_spend_daily náklady × kampaň × den 2 · ads_touchpoints příchody z reklam (user_id) 3 · ads_identity_map user_id ↔ e-mail 4 · ads_orders objednávky (order_id, e-mail, user_id) 5 · ads_order_items položky: produkt, značka, kategorie, cena campaign_id user_id e-mail order_id order_id + user_id - webová objednávka (událost dokončení objednávky na webu; nese i e-mail do mapy identit)

objednávka → člověk → jeho kliky → kampaň → její náklady · položky objednávky → kategorie a značka

plná čára = join přes klíč · zelená čárkovaná = přímý most u webových objednávek (bez e-mailu) · campaign_id = gad_campaignid / utm_id / název kampaně

1 · ads_spend_daily - náklady a výkon kampaní

denní aktualizace · upsert 7 dní zpět (platformy čísla zpětně upravují) · klíč: date + platform + campaign_id · zdroj: API reklamních platforem (Google Ads, Meta, Sklik; další dle seznamu platforem od vaší agentury)
dateplatformcampaign_idcampaign_namespend_czkimpressionsclicksconversions_platform
2026-09-18google22734863948[G]_[MAX]_FOTOSKODA_2022_09_01_BRANDY8 420,3096 3101 14027,0
2026-09-18google22734870211[G]_[SEA]_FOTOSKODA_BRAND1 260,009 82061241,0
2026-09-18sklik712398455[S]_[SEA]_OBJEKTIVY_CANON_RF2 980,0038 1004559,0
2026-09-18facebook120214077881230[FB]_[PROSP]_INSTAX_PODZIM3 150,80184 2007206,3
všechny sloupcedate, platform, account_id, campaign_id, campaign_name, currency, spend, impressions, clicks, conversions_platform, spend_czk, loaded_at

2 · ads_touchpoints - příchody z reklam

denní aktualizace · append, dedup přes event_id · identifikátor návštěvníka: stabilní user_id z měření Meiro na fotoskoda.cz · sběr dat od nasazení jednotného značení kampaní · měření běží jen s marketingovým souhlasem, návštěvy bez souhlasu v datech nejsou · CDP drží návštěvy 40 dní, historii uchovává až tabulka v BigQuery
event_timeuser_idutm_sourceutm_mediumutm_campaigngad_campaignid / utm_idclick_idreferrer_medium
2026-09-12 09:14cf1a75d5-…googlecpc[G]_[MAX]_FOTOSKODA_2022_09_01_BRANDY22734863948gclid: CjwKCAjw…search
2026-09-16 20:41cf1a75d5-…seznamcpc[S]_[SEA]_OBJEKTIVY_CANON_RF--search
2026-09-15 12:060b44455a-…facebookpaid_social[FB]_[PROSP]_INSTAX_PODZIM120214077881230fbclid: PAZXh0bg…social
2026-09-17 08:022ad7f2c6-…heurekacpc---unknown
2026-09-18 19:1291c07aa1-…-----direct
všechny sloupceevent_id, event_time, user_id, session_id, host, path, utm_source, utm_medium, utm_campaign, utm_content, utm_term, utm_id, gclid, gad_campaignid, gad_source, gbraid, wbraid, fbclid, msclkid, referrer_host, referrer_medium, ga_cid, device_family, is_mobile, query_raw
Tabulka obsahuje všechny návštěvy s reklamními parametry i bez nich (organika, direct) - potřebné pro pravidlo „poslední ne-direct klik" a pro podíl nepřiřazených objednávek. Návštěvy z vlastních kanálů (newsletter, ponákupní e-mail) se také zaznamenávají, do atribuce vstupují dle rozhodnutí níže.

3 · ads_identity_map - most user_id ↔ e-mail

denní aktualizace · upsert · klíč: user_id + email · zdroj: identifikační události na webu (dokončení objednávky, přihlášení, newsletter) a spojení profilů v CDP
user_idemailemail_hash (sha256)first_seenlast_seensource
cf1a75d5-…jana.novakova@seznam.czf6c28512…cba7072026-09-18 21:492026-09-18 21:49checkout → objednávka 5260918012
4cb1ebdf-…petr.dvorak@gmail.coma91f03d2…7be12026-07-02 18:112026-09-11 10:15login
0b44455a-…lucie.benesova@email.cz3c88de10…f0422026-08-19 22:012026-09-15 12:10profile (spojení v CDP)
Mapu plní přímo každá webová objednávka: událost dokončení objednávky nese user_id + číslo objednávky + e-mail. Přes e-mail se pak na kliky napojí i nákup na prodejně se zákaznickou kartou nebo objednávka zadaná jinak než na webu. Profily s podezřele mnoha e-maily (sdílené zařízení) se z mapy vynechávají, práh je k dohodě.

4 · ads_orders - objednávky

denní aktualizace · upsert per order_id (poslední stav) · zdroj: objednávky a doklady z Winshopu tak, jak je dnes zpracovává CDP · identifikátory osoby: e-mail + user_id (webové objednávky)
order_idemailuser_idcreated_dateorder_sourcestatusis_paidis_cancelledtotal_price_czktotal_discount_czkcurrency
5260918012jana.novakova@seznam.czcf1a75d5-…2026-09-18 21:49eshop31054 9900CZK
4260919003petr.dvorak@gmail.com4cb1ebdf-…2026-09-19 10:02fotosluzby3101 3200CZK
7260920001lucie.benesova@email.cz0b44455a-…2026-09-20 14:22bazar60018 9000CZK
STORE_3711820260140tomas.marek@centrum.cz-2026-09-20 16:05prodejna3102 460246CZK
5260921044alena.horakova@seznam.cz77f0d2c9-…2026-09-21 11:47eshop40131 4900CZK
5260922007m.kovac@gmail.com9c11ab07-…2026-09-22 09:12eshop31012 1750EUR
všechny sloupceorder_id, email, customer_id, user_id (jen webové objednávky), created_date, order_source (eshop / fotosluzby / bazar / festival / kombinovane / prodejna), status, is_paid, is_cancelled, currency, exchange_rate, total_price, total_price_czk, total_price_without_vat_czk, total_discount_czk, shipping_cost_czk, payment_type, delivery_type, products_count, last_change, loaded_at
Webová objednávka nese user_id přímo v řádku → atribuce bez e-mailové cesty. Nákupy na prodejně jsou v datech jen tehdy, když se zákazník identifikoval (zákaznická karta / e-mail na dokladu); anonymní nákupy na prodejně v modelu nejsou. Stav a zaplacení se aktualizují podle dokladu z Winshopu - storno dorazí jako změna stavu.

5 · ads_order_items - položky objednávek

denní aktualizace · upsert per order_id + kod_zbozi · vazba na objednávku přes order_id · zdroj: položky objednávky / dokladu obohacené o název, značku a kategorii z produktového katalogu
order_idkod_zboziproduct_nameproduct_brandcategory_l1category_l2quantityunit_price_czkstock_type
52609180122011684SONY Alpha A7 IV těloSonyFotoaparátyBezzrcadlovky154 990nove
42609190033100001FOMADON LQN negativní vývojka 250 mlFomaAnalog, filmy a fotokomoraFotochemie1160nove
42609190033080758HAMA archiv 6x7 pergamen 2259HamaTisk a fotoslužbyAlba, rámy, archivace2012fotosluzby
72609200017120044CANON EOS R6 tělo (bazar)CanonFotoaparátyBezzrcadlovky118 900bazar
STORE_37118202601402004396GODOX spoušť rádiová TR-N3 pro NikonGodoxPříslušenstvíFotopříslušenství11 250nove
všechny sloupceorder_id, kod_zbozi, ean, product_name, product_brand, product_type (celá cesta), category_l1, category_l2, category_l3, quantity, unit_price_czk, line_total_czk, price_source (doklad / objednávka), stock_type (nove / fotosluzby / bazar), is_free_accessory, loaded_at
Díky položkám lze ROAS a náklady na objednávku vyhodnotit po kategorii (fotoaparáty vs. příslušenství vs. fotoslužby) a po značce - tedy i pro kampaně typu „akce Canon" nebo „Sony PMax". Bazarové zboží má název z Winshopu a bez kategorie z katalogu; doprava a slevové položky jsou na úrovni objednávky (tab. 4), ne v položkách.
Klíčový detail: událost dokončení objednávky na webu. Při odeslání objednávky na fotoskoda.cz vzniká událost, která nese zároveň číslo objednávky (stejné jako ve Winshopu), user_id návštěvníka i e-mail. Webová objednávka se tak na kliky napojí přímo, bez e-mailové cesty, a každý nákup zároveň rozšiřuje mapu identit (tab. 3). E-mailová cesta zůstává pro nákupy na prodejně se zákaznickou kartou a pro zákazníky s více zařízeními.

Provozní parametry dodávky

Doporučená logika spojení

  1. Webová objednávka → kliky: user_id přímo v řádku objednávky → touchpointy tohoto user_id. Nejsilnější cesta, e-mail není potřeba.
  2. Nákup na prodejně / jiné zařízení → kliky: e-mail → ads_identity_map → user_id → touchpointy.
  3. Výběr vítězného kliku: okno 30 dní před objednávkou, vyhrává poslední ne-direct klik. Zda mohou vyhrát vlastní kanály (newsletter, ponákupní a shopping-intention e-maily), je k rozhodnutí.
  4. Klik → kampaň → náklady: Google přes gad_campaignid, Meta přes utm_id, Sklik přes název kampaně dle jednotné konvence; zbožové srovnávače (pokud je agentura používá) na úrovni zdroje.
  5. Tržby: navrhovaný default = objednávky bez storen, hodnota s DPH po slevě, bez dopravy. V tabulce jsou vedle sebe i zaplacené vs. objednané a hodnota bez DPH - výběr je na tom, kdo staví report.
  6. Edge cases: objednávka bez kliku → „nepřiřazeno" (anonymní prodejna, návštěvník bez marketingového souhlasu, organika); podíl přiřazených objednávek (coverage) vykazovat vedle výsledků - u zákazníků bez souhlasu klik nevidíme, i když z reklamy přišli.
Pravidlo výběru vítěze je doporučený default - nad stejnými tabulkami lze postavit i jiné modely bez zásahu do dodávaných dat.

Co potřebujeme z vaší strany

K rozhodnutí

Návrh k diskuzi - struktura tabulek vychází z dat, která už dnes do CDP FotoŠkody tečou (objednávky a doklady z Winshopu, měření webu, produktový katalog). · Data Club