[{"data":1,"prerenderedAt":1657},["ShallowReactive",2],{"{\"version\":\"published\",\"language\":\"en\"}layout":3,"{\"version\":\"published\",\"language\":\"en\"}content":202,"content-list-content-list-framework-1-en-framework":258,"oTIm7UCOR3":510,"2iFwuBNQF7":525,"XJgu1h55TI":535,"RY5zrg7vD9":545,"GTa8loU39k":555,"roN1L0BVGB":565,"6k9g4ypUi9":575,"vMvjlGnxik":585,"iS1uTtmrs0":595,"w4nvEdADoP":605,"sUyBDryMhc":615,"fNquDD4qwv":625,"Nvsw69th8P":635,"T9GdLtjQnk":645,"content-list-content-list-index-1-en-case-studies,webinars,knowledge":655,"9WgZow3iwT":1229,"qRsgyVaJ4r":1239,"pJ5fdJ3QB0":1249,"SxN9giyF1D":1269,"UUYO5tvGlj":1291,"WeSc6HePja":1301,"jqnio3o4Hw":1331,"Fk9pkJ5X16":1341,"1I1OSPQVw3":1370,"KF50BoeNX2":1380,"M1A3tAobLD":1407,"6UErIukmcI":1417,"QaZosdcxPC":1433,"wwXeSRbZBN":1443,"uzXIOt0d4J":1459,"meq5CwEb5s":1469,"eygE58EeSc":1479,"nISmFEg228":1489,"iOIsPvcTZM":1499,"ZWbKARDAxl":1509,"79hWGbQ91b":1519,"5k1aciaT1b":1535,"Ej3dGDgcRB":1564,"f0xEQncwd4":1574,"Ke6NfdaNEG":1584,"GhGReQZBFK":1604,"fuldyLrLhv":1622,"okgaSsujcn":1639},{"data":4,"headers":180},{"story":5,"cv":177,"rels":178,"links":179},{"name":6,"created_at":7,"published_at":8,"updated_at":9,"id":10,"uuid":11,"content":12,"slug":168,"full_slug":168,"sort_by_date":169,"position":170,"tag_list":171,"is_startpage":32,"parent_id":169,"meta_data":169,"group_id":173,"first_published_at":174,"release_id":169,"lang":175,"path":169,"alternates":176,"default_full_slug":169,"translated_slugs":169},"Layout & Menu Settings","2024-07-09T11:23:15.417Z","2026-09-14T16:33:16.637Z","2026-09-14T16:33:16.651Z",520580076,"d0565ccd-50f8-4a35-9583-813fff54f59a",{"_uid":13,"menu":14,"banner":135,"footer":136,"component":166,"promotion":167},"9245e14a-f18f-4a6c-8060-61e8beb3d9f1",[15],{"_uid":16,"logo":17,"component":22,"rightSide":23,"navigation":40},"fd2f2bd7-3ebb-4923-8327-febceaf9131b",{"id":18,"alt":19,"filename":20,"fieldtype":21},16613298,"","https://a.storyblok.com/f/296300/2078x457/3b34c3fe19/witbee-logo-new.png","asset","mega-menu",[24,34],{"_uid":25,"href":26,"size":27,"text":28,"target":29,"rounded":30,"variant":31,"disabled":32,"component":33,"showArrow":32},"839bb546-784b-4ba0-871b-263f3c901b86","/contact-free-consultation","md","Free consultation","_self","none","primary",false,"button-blok",{"_uid":35,"href":36,"size":27,"text":37,"target":29,"rounded":30,"variant":38,"disabled":32,"component":33,"showArrow":39},"32d63a94-8cbd-474c-9ce1-457cfa576ccf","https://cloud.witbee.com","Login","secondary",true,[41,50,90,129],{"_uid":42,"link":43,"name":47,"subItems":48,"component":49},"3f3dab6a-9cd6-4ea1-9fdd-645b62d9cb49",{"id":19,"url":44,"linktype":45,"fieldtype":46,"cached_url":44},"/services","url","multilink","Services",[],"mega-menu-item",{"_uid":51,"link":52,"name":54,"subItems":55,"component":49},"6951d7b0-368d-4db6-85fa-80af9088e8e0",{"id":19,"url":53,"linktype":45,"fieldtype":46,"cached_url":53},"/usługi","WitCloud Platform",[56],{"_uid":57,"links":58,"title":88,"component":89},"9e0dbc8d-3b23-474c-ab56-2eba6486c651",[59,67,74,81],{"_uid":60,"icon":61,"link":62,"component":64,"lowerText":65,"upperText":66},"2144a1bf-1bdf-4a82-9f59-b5e7d7f73f47","InformationCircleIcon",{"id":19,"url":63,"linktype":45,"fieldtype":46,"cached_url":63},"/witcloud","mega-menu-subitem-link","Learn about WitCloud","Platform overview",{"_uid":68,"icon":69,"link":70,"component":64,"lowerText":72,"upperText":73},"a6f22621-aa4f-4b0c-be09-11b4140d7dea","UsersIcon",{"id":19,"url":71,"linktype":45,"fieldtype":46,"cached_url":71},"/witcloud/integrations","GA4, Ad Systems, E-commerce platforms & more","Our Data Integrations",{"_uid":75,"icon":76,"link":77,"component":64,"lowerText":79,"upperText":80},"42267fc4-06a8-465a-a3cf-56a311ff7022","NewspaperIcon",{"id":19,"url":78,"linktype":45,"fieldtype":46,"cached_url":78},"/witcloud/pricing","Flexible subscription","Pricing",{"_uid":82,"icon":83,"link":84,"component":64,"lowerText":86,"upperText":87},"6333bd24-c3b2-46ba-8dc2-93770459a0bc","BriefcaseIcon",{"id":19,"url":85,"linktype":45,"fieldtype":46,"cached_url":85},"/witcloud/docs/","Check how to configure","Documentation","Overview","mega-menu-subitem",{"_uid":91,"link":92,"name":94,"subItems":95,"component":49},"0182c7f6-b9d7-4e01-81bd-97635c68d72f",{"id":19,"url":93,"linktype":45,"fieldtype":46,"cached_url":93},"/content","Knowledge Hub",[96],{"_uid":97,"links":98,"title":94,"component":89},"0f09839c-f7ce-48b8-8dc4-9269791644c0",[99,104,110,117,123],{"_uid":100,"icon":76,"link":101,"component":64,"lowerText":102,"upperText":103},"dd3ac1b6-d987-496d-bb75-e0db7459a79f",{"id":19,"url":93,"linktype":45,"fieldtype":46,"cached_url":93},"All our guides, case studies and webinars","All resources",{"_uid":105,"icon":61,"link":106,"component":64,"lowerText":108,"upperText":109},"5a1e2f7a-1111-4a00-9101-aa0000000101",{"id":19,"url":107,"linktype":45,"fieldtype":46,"cached_url":107},"/content/framework","Our analytics framework, explained step by step","Framework",{"_uid":111,"icon":112,"link":113,"component":64,"lowerText":115,"upperText":116},"5a1e2f7a-2222-4a00-9102-aa0000000102","VideoCameraIcon",{"id":19,"url":114,"linktype":45,"fieldtype":46,"cached_url":114},"/content/webinars","Recordings of our expert-led sessions","Webinars",{"_uid":118,"icon":83,"link":119,"component":64,"lowerText":121,"upperText":122},"5a1e2f7a-3333-4a00-9103-aa0000000103",{"id":19,"url":120,"linktype":45,"fieldtype":46,"cached_url":120},"/content/case-studies","Real results from our clients","Case studies",{"_uid":124,"icon":76,"link":125,"component":64,"lowerText":127,"upperText":128},"5a1e2f7a-4444-4a00-9104-aa0000000104",{"id":19,"url":126,"linktype":45,"fieldtype":46,"cached_url":126},"/content/knowledge","Guides on GA4, BigQuery and more","Knowledge base",{"_uid":130,"link":131,"name":133,"subItems":134,"component":49},"eaef6de5-12a1-40f0-8bcf-3e00472ef87e",{"id":19,"url":132,"linktype":45,"fieldtype":46,"cached_url":132},"/contact","Contact",[],[],[137],{"_uid":138,"logo":139,"columns":140,"socials":162,"footnote":163,"component":164,"newsletter":165},"6bbe2605-0003-4e0f-9c83-f57387d6b9dc",{"id":18,"alt":19,"filename":20,"fieldtype":21},[141],{"_uid":142,"links":143,"title":160,"component":161},"bb943e00-cbd9-44d3-9ca8-e287f92f9a4c",[144,150,155],{"_uid":145,"link":146,"name":148,"component":149},"fa11f2ce-87a4-40b7-8c26-2248948ecdab",{"id":19,"url":147,"linktype":45,"fieldtype":46,"cached_url":147},"/legal/privacy-policy","Privacy policy","website-footer-link",{"_uid":151,"link":152,"name":154,"component":149},"29ce4cf1-4ae3-4c03-a924-1b7283a52cea",{"id":19,"url":153,"linktype":45,"fieldtype":46,"cached_url":153},"/legal/witcloud-terms-of-use","WitCloud - terms of use",{"_uid":156,"link":157,"name":159,"component":149},"7b2b71ce-9047-493a-ae9a-24f33d13b228",{"id":19,"url":158,"linktype":45,"fieldtype":46,"cached_url":158},"/legal/witcloud-privacy-policy","WitCloud - privacy policy","Legal","website-footer-column",[]," ©2025 Witbee sp. z o. o. All rights reserved.","website-footer",[],"layout-blok",[],"layout",null,30,[172],"Global","961eba08-4135-4b80-aba4-032c02789c49","2024-07-12T13:10:50.158Z","default",[],1789403597,[],[],{"age":181,"cache-control":182,"connection":183,"content-encoding":184,"content-type":185,"date":186,"etag":187,"referrer-policy":188,"sb-be-version":189,"server":190,"transfer-encoding":191,"vary":192,"via":193,"x-amz-cf-id":194,"x-amz-cf-pop":195,"x-cache":196,"x-content-type-options":197,"x-frame-options":198,"x-permitted-cross-domain-policies":30,"x-request-id":199,"x-runtime":200,"x-xss-protection":201},"5577","max-age=0, public, s-maxage=604800, stale-if-error=3600","keep-alive","gzip","application/json; charset=utf-8","Mon, 14 Sep 2026 16:37:40 GMT","W/\"e0339bcda817cf0a25588916e248a8b2\"","strict-origin-when-cross-origin","5.968.3","nginx/1.29.1","chunked","Origin,Accept-Encoding","1.1 5a3fd9534d17ed5056b6ebc432dfa02e.cloudfront.net (CloudFront)","EM_z-ftQmZS4ip_WCxC8eYOnItsBmUL6dRvKeCt4yyYDKt0MxDF1wA==","WAW51-P2","Hit from cloudfront","nosniff","SAMEORIGIN","d64ef2c5-0d0f-4b51-8ea7-e2475b77b144","0.019719","0",{"data":203,"headers":251},{"story":204,"cv":177,"rels":249,"links":250},{"name":205,"created_at":206,"published_at":207,"updated_at":208,"id":209,"uuid":210,"content":211,"slug":241,"full_slug":242,"sort_by_date":169,"position":243,"tag_list":244,"is_startpage":39,"parent_id":245,"meta_data":169,"group_id":246,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":248,"default_full_slug":169,"translated_slugs":169},"Content","2026-06-22T14:02:18.900Z","2026-08-21T07:33:54.366Z","2026-08-21T07:33:54.380Z",190248300155031,"8ba44529-a969-4a12-b7e8-17bb66368cdd",{"_uid":212,"body":213,"component":233,"meta_tags":234,"meta_title":240},"e5674c8f-71f1-471e-a60e-c618b0563649",[214,224],{"_uid":215,"sort":19,"limit":19,"header":128,"source":216,"eyebrow":19,"component":220,"showFilter":39,"description":221,"displayMode":222,"moduleBackground":223},"content-list-index-1",[217,218,219],"case-studies","webinars","knowledge","content-list-blok","Articles, guides and case studies.","grid","white",{"_uid":225,"sort":226,"limit":19,"header":227,"source":228,"eyebrow":230,"component":220,"description":231,"displayMode":232,"moduleBackground":223},"content-list-framework-1","priority","Witbee Framework",[229],"framework","Methodology","A structured approach to building a data-driven organization — from a single source of truth to AI-ready analytics.","list","landing-page",[235],{"_uid":236,"name":237,"content":238,"component":239},"content-index-meta-description","description","Articles, guides, case studies and webinars on e-commerce analytics — BigQuery, GA4 and reporting automation.","meta-tag","Knowledge Hub — analytics guides, case studies and webinars","content","content/",-290,[],190219846675586,"4bf1ea92-03e9-4a22-b066-28320ec84f8c","2026-08-21T07:00:41.845Z",[],[],[],{"age":252,"cache-control":182,"connection":183,"content-encoding":184,"content-type":185,"date":186,"etag":253,"referrer-policy":188,"sb-be-version":189,"server":190,"transfer-encoding":191,"vary":192,"via":254,"x-amz-cf-id":255,"x-amz-cf-pop":195,"x-cache":196,"x-content-type-options":197,"x-frame-options":198,"x-permitted-cross-domain-policies":30,"x-request-id":256,"x-runtime":257,"x-xss-protection":201},"5578","W/\"c7482d9c9fe197c6864f24e69cfeedce\"","1.1 444c86780ce99d2fc729208a25cb6aa2.cloudfront.net (CloudFront)","Ns4NmDzBP2bJKSsk415Nrjf_y-Ax_7_lu3KaojXb_kkQakqPb-wi3A==","f68c39e5-581d-43e1-a0d2-cc1a48391b0a","0.014795",[259,308,348,387,426,464],{"name":260,"created_at":261,"published_at":262,"updated_at":263,"id":264,"uuid":265,"content":266,"slug":301,"full_slug":302,"sort_by_date":169,"position":303,"tag_list":304,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":306,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":307,"default_full_slug":169,"translated_slugs":169},"AI Assistant in Business","2026-06-25T07:32:56.459Z","2026-08-30T18:38:05.253Z","2026-08-30T18:38:05.272Z",191214290814892,"7ca93d10-0cda-498b-adae-b95b32c15503",{"_uid":267,"title":260,"content":268,"eyebrow":109,"showTOC":39,"category":19,"priority":269,"readTime":270,"subtitle":271,"component":272,"eventDate":19,"heroImage":273,"meta_tags":277,"meta_title":297,"eventFormat":19,"heroButtons":298,"updatedDate":299,"bottomBlocks":300},"b28c4bcc-cb27-42e1-bd04-d85e3805d44e","Imagine asking about your own data the way you'd ask a colleague. “Why did ROAS in Poland drop last week?\", “How much did we really make on Black Friday after returns?\", “Do customers from this promotion come back?\" And you get the answer during the meeting — not in a ticket to your analyst with a due date the day after tomorrow.\n\nTechnically this is possible today, and it's called MCP: a standard that lets you connect the AI model your team already uses — ChatGPT, Claude or Gemini — to external data sources. It sounds like the whole problem solved, which is exactly why the catch is worth naming right away. Connecting AI to your data isn't the same as making it understand your data. This article is about that difference — and about what you have to add so that connecting it produces something you can base a decision on.\n\nOne clarification up front, so there's no misunderstanding: we're not talking about another chat window bolted onto a dashboard. We're talking about the model you already use, connected to your warehouse through a layer that knows what your numbers mean.\n\n# Connecting AI to data isn't the same as making it understand data [Connect vs understand]\n\nCompanies trying to analyze data with AI today usually do it one of three ways. It's worth going through them one by one, because each fails at a different point.\n\n- **A screenshot or a data export pasted into a chat.** The model will calculate exactly what it was given — a slice, with no way to check anything deeper. Every follow-up question means another export, and every “break that down by market too\" means going back to the dashboard. It works for one question; it doesn't work as a way of working.\n- **AI connected directly to source systems — GA4, Meta, the store.** The data there is raw and scattered, so the model queries six sources, pulls thousands of rows of products and transactions into context, confuses spend with cost, and simply chokes on larger volumes. It looks great in a demo. At real volume, it answers slowly, expensively and unreliably. We went into this at length in the piece on [a single source of truth](/content/framework/single-source-of-truth) — it also shows how much of that work can be done once, instead of from scratch at every question.\n- **AI on your own warehouse, but without documentation.** This approach looks the most serious, which is exactly why it's the most deceptive. The data is already in one place, the model has access to the tables — nobody just told it what those tables mean. Your order-status column might have seven values, two of which mean “returned,\" one means “cash on delivery, not yet paid,\" and one is left over from a store migration and no longer means anything. The model doesn't know that and has no way to find out, so it counts revenue from everything and hands back a number that sounds credible. Because AI fills gaps in documentation with its most plausible guess — and “plausible\" and “true\" are two different things in analytics.\n\n![The same AI in two setups — without documentation it guesses on raw tables, with documentation it asks for a ready dataset and knows which order statuses mean a return](https://a.storyblok.com/f/296300/18265e824a/ai-assistant-01-zgadywanie-vs-dokumentacja.gif)\n*On the left, the model picks the raw tables itself and counts revenue from every order status. On the right, it reads the documentation first and knows which of them mean a return — the same AI, two different numbers.*\n\n> The model doesn't have a problem with counting. It has a problem with nobody telling it what your numbers mean. And the one that's guessing sounds exactly as confident as the one that knows.\n\nThat's the entire difference between “we connected AI to our data\" and “we have an assistant a decision can be based on.\"\n\n# What the AI assistant in WitCloud is [What it is]\n\nThe AI assistant is our module built on WitCloud MCP — a layer that sits between the model you use and your data in your own BigQuery. We're not taking you to yet another chat panel: you connect your assistant to your data and work where you already largely work.\n\nThis layer does three things — and they're what accounts for the difference described above.\n\n- **It points the model only at ready-made datasets.** The assistant works on the All In One tables and on our solutions' tables — LTV and customer segmentation, the KPI tree, monitoring, product analysis — never on raw data. The heaviest work — joining, cleaning and aggregating millions of rows — has already been done earlier, in the warehouse, on Google Cloud's compute power. The model doesn't grind through raw tables: it asks for a ready, lightweight dataset and gets an answer immediately.\n- **Documentation first, then the query.** Every project carries its own documentation: what it contains, what each column means, which query a given analysis is calculated with. The assistant reads it before calculating anything — and uses the rules described in the documentation instead of building its own queries from scratch. This is the one rule whose absence turns the previous scenario into a generator of confident-sounding nonsense.\n- **It starts by establishing what you're working on.** You pick a project, the assistant pulls in its contents — data sources, business contexts, channel and market groupings — and asks about two things: what you want to analyze, and what form you want the answer in — a table, a summary, chart-ready data, or a mix of both. Only then does it go down to the data, and it sticks to the agreed format for the rest of the session.\n\n![How every session starts: pick the project, read the documentation, agree the question and the answer format, and only then query the ready dataset](https://a.storyblok.com/f/296300/222ebb95db/ai-assistant-02-najpierw-dokumentacja.gif)\n*Four steps, in this order, at every session. Reverse the order and you get answers you cannot defend.*\n\nAnd if a project doesn't have anything to analyze yet — because Google Cloud isn't connected, or the first connector hasn't delivered data yet — the assistant recognizes that and walks you through what's missing, instead of searching for data that isn't there.\n\n# Three things that turn a correct answer into a useful one [Three things]\n\nA correct answer is one where the numbers add up. A useful one is one you can bring to a meeting and make a decision on. Between the two stand three things you describe once, and the assistant reads at every analysis.\n\n![Business context, event log and channel grouping — described once, read at every analysis, which is how a 40% traffic increase gets a cause instead of seasonality](https://a.storyblok.com/f/296300/e598b6d73b/ai-assistant-03-trzy-wejscia-kontekstu.gif)\n*You describe them once, the assistant reads them at every analysis. Thanks to them “+40% traffic\" gets a cause — the campaign that started on the 12th — instead of seasonality.*\n\n**Business context — what your company actually is**\n\nYour own description: what you sell and to whom, which markets you operate in, how your industry behaves, what “new customer\" means for you, where you have margin and where it's just turnover. You keep it as text in WitCloud or in your own Google Docs, which WitCloud reads at every analysis — so you update it wherever you already work.\n\nA project can have several contexts: a separate one per brand, a separate one per market. An analysis is always read against the one you specify — the assistant doesn't choose it for you. That's deliberate: automatically picking “the first one on the list\" is the simplest way to get an accurate-sounding answer about the wrong business.\n\n**Event log — why the numbers did what they did**\n\nA calendar of what happened at your company: a promotion, a change to the free-shipping threshold, a stockout, a store migration, entering a new market, a rebrand. A simple spreadsheet — date, category, description.\n\nThis is what turns “traffic grew 40%\" into “traffic grew 40% because a campaign launched on the 12th,\" and protects you from the most common excuse in analytics — blaming seasonality for anything we can't explain another way. The assistant reads this log during analysis and can add to it: you tell it in conversation that a delivery fell through last week, and it adds an entry. A month later, no one will be wondering what happened there.\n\n**Channel and market grouping — so both are named the way your company names them**\n\nTraffic and cost arrive labeled as a mess: google / cpc, newsletter_2024, fb-ig, twenty UTM variants. Channel grouping is your set of rules that reduces this to the channels your team actually talks about in a meeting.\n\nThe same module handles a second dimension that gets discussed far less often and, with more than one market, decides everything: market grouping. Because a market arrives in several versions at once too — GA4 talks about the country of the session, the store about the shipping country, the ad account about targeting, and a single campaign can serve three countries at the same time. On top of that, “market\" in your company rarely means exactly “country\": DACH is often one market, the rest of the EU one bucket, and the marketplace its own entity even when it sells in the same country as the store. Market grouping is the same set of rules, just on that dimension — reducing every variant to the split you actually manage.\n\nAnd this is the dimension it's easiest to trip on, because the error doesn't look like an error. “Is Germany behaving today the way Poland did a year ago?\" or “which market are we losing money on shipping in\" are questions where the whole difficulty sits not in the arithmetic, but in whether Germany means the same thing on both sides of the comparison. The path you walk when diagnosing — market → channel → campaign — starts on exactly this dimension: if the first step is out of alignment, the rest of the drilldown leads somewhere wrong, just in great detail.\n\nThe quality of both groupings decides how trustworthy every channel report and every cross-market comparison is, so it's worth reviewing — and that's a job perfectly suited to the assistant. It will calculate, on your own data, how much cost and traffic lands in “other,\" which rules no longer catch anything, what the biggest unassigned sources are, and where markets drift apart between systems. It will propose fixes. And if the new rules are meant to cover historical data too, it shows you the cost estimate first — recalculating history is the only operation in this module that actually costs something, and nothing starts without your explicit approval.\n\n> Numbers tell you what happened. Context tells you why — and only that decides whether an answer is fit for a decision.\n\n# Four things people do with the assistant most often [Four use cases]\n\n1. **A weekly health check.** Instead of opening five reports: “go through the whole KPI tree, every metric in its own comparison window, and tell me what needs my attention.\" If the tree is defined in WitCloud — with metrics linked and the right window on every branch — the assistant has something to work down through, and it comes back with one coherent overview: from the top of the tree down to the levers you'd end up drilling into by hand anyway. Without a tree it will still answer, just a narrower question: about a specific metric, not about your overall health.\n2. **Diagnosis when something deviates from the norm.** An alert says ROAS in Poland dropped 22%. You ask “why\" directly, and the assistant follows the same path you'd take in a report: market → channel → campaign, and then it breaks down the metric itself — cost or revenue, CPC or click count. It just goes deeper, and doesn't get tired by the tenth branch in the middle of the day.\n3. **Customer questions.** How much a customer from Google Ads is worth compared to one from a newsletter. How many months it takes to recover acquisition cost in the March cohort. Which channels bring in valuable customers, and which just bring in cheap ones. Which products acquire customers, and which build loyalty. How segments shift from month to month.\n4. **Product questions.** What sells versus what makes money. Where variants are eroding and which campaigns are already feeling it. What a new arrival delivered in its last test window. Which products are running out of stock while their budget is still switched on.\n\nOn top of that comes a category you can't plan for: one-off questions. “Do customers from this promotion come back?\", “How much did we really make on Black Friday after returns?\", “Is Germany behaving today the way Poland did a year ago?\" Before, each of these was a ticket that went into a queue. Now it's a question asked mid-conversation — and that's the change people feel the most.\n\n![Four recurring jobs for the assistant: a weekly pass over the whole KPI tree, diagnosing an outlier from market through channel to campaign, customer questions and product questions](https://a.storyblok.com/f/296300/83d50e6e15/ai-assistant-04-cztery-zastosowania.gif)\n*Every one of these use cases runs on a module you already have in WitCloud — the assistant just opens it up to the whole team.*\n\n# It works inside the tool your team already uses [Your tool]\n\nWe're not building our own chat, because your team already has one. You connect WitCloud to ChatGPT, Claude, or Gemini — we have a step-by-step guide for each. You log in with your own WitCloud account, by email and password or through Google, and access is per user, not one shared key for the whole company.\n\nData never leaves your Google Cloud. The model gets a query result — only as much as it needs for the answer — not a copy of the warehouse. Everything the assistant reads is read-only; it only changes the three things you explicitly ask it to: business context, the event log, and channel and market grouping.\n\nThe assistant itself doesn't touch your campaigns — and that's a choice, not a gap. But MCP is a standard, so ours doesn't have to be the only one in the chat: you plug the Google Ads MCP in next to it and have both in the same conversation. Ours supplies the knowledge — what's happening, in which market and why — and that one does the work, on its own permissions, which you grant separately. Let them talk to each other. The decision is still yours; you just don't have to click it through three panels any more.\n\nYou don't need to know SQL, and you don't need to know what the tables are called. You need to know what to ask — and that's a skill your team already has. The analyst doesn't disappear in this either: they stop stitching together reports for questions that a ready-made dataset can already answer, and focus on the ones that genuinely need an analyst.\n\nBilling runs per active user per month and is tiered: you only pay for people who actually asked something that month, and the more of them there are, the lower the rate on the next tiers. You'll find the current tiers in the module's documentation.\n\n# The more you have in place, the more the assistant gets out of it [Snowball effect]\n\nThe assistant works from day one — a warehouse with data flowing into it and a business context on one page is enough. But it doesn't invent analyses out of thin air: it reaches for what you already have computed. So every additional module you switch on doesn't give it a new feature — it gives it new questions it can answer. And that's probably the nicest part of this puzzle, because it works without any extra effort on your side.\n\n- **All In One** supplies the common language: spend and cost stop being two different things, and the assistant can answer about sales, costs, channels and ROI in one number instead of five.\n- **The data quality audit** decides whether that number can be trusted. The assistant will count exactly what it's given — so the fewer holes at the source, the fewer confidently delivered mistakes.\n- **The KPI tree with monitoring** turns “how are we doing?\" into a concrete path. The assistant doesn't have to guess what to look at: it has defined metrics, comparison windows and branches to walk down.\n- **LTV and customer segmentation** open a whole block of customer questions — cohorts, payback on acquisition, customer value per channel — without computing it from scratch at every question.\n- **Product analysis** does the same for your assortment: margin, turnover, stock and variant erosion are already computed, so “what earns versus what merely sells\" gets an answer rather than another query.\n\n![Six parts of the framework — single source, audit, KPI tree, customer view, product view — with the AI assistant as the sixth, which adds no new data but opens up what is already there](https://a.storyblok.com/f/296300/89d14566d5/ai-assistant-05-framework-szesc-czesci.gif)\n*The assistant doesn't add new data to the framework — it opens up the data you already have, to the whole company.*\n\nAnd it works both ways. The assistant is also the fastest way to review and maintain those modules: it will check channel and market grouping, point out rules that no longer catch anything, add to the event log what you tell it in conversation. The more you have in place, the more you get out of it — and the more often you use it, the better organized what you have stays.\n\nYou don't need all of it to start. It's just worth knowing there's no dead end here: every piece you add simply widens the range of questions you'll get a sensible answer to.\n\n# What the assistant won't do [What it won't do]\n\nBeing upfront about the limits, because they decide whether this works for you.\n\n- **It won't fix your data quality.** If half your transactions never make it to analytics because the purchase tag doesn't fire after returning from the payment gateway, the assistant will calculate exactly what's there — and say it confidently. That's why it runs on a guarded source rather than raw systems. If you want to know what specifically tends to break along the way and how to catch it, we wrote it up in [the marketing data audit](/content/framework/data-quality).\n- **It won't replace a report.** Some teams simply prefer to click through a ready-made All In One report — and that's fine. Both stand on the same source, so either path leads to the same number.\n- **It doesn't know your business out of thin air.** Without context and without the event log, it will explain as seasonality what was actually a promotion. These two things are the only “homework\" in this module — and it takes a page, not a book.\n- **It won't answer questions about data you don't collect.** A missing integration won't turn into an answer. It'll turn into information about what's missing — which is useful too, but it's a different answer than the one you're counting on.\n- **Fresh data is still fresh.** Yesterday is usually closed out, today isn't, and conversions keep arriving for a few more days. The assistant accounts for this, but doesn't override it.\n\n# Getting started [Getting started]\n\nOn the data side the minimum is shorter than it looks: a working All In One with data flowing into it, reviewed channel and market grouping, and a business context that fits on one page. That's enough to ask the first questions worth asking — the rest arrives along the way, at whatever pace you set.\n\nOn the team side: one person who starts, and one rhythm. A weekly meeting with five standing questions works best — what changed, what's off from normal, where we're losing, what came through, what we do next — one where nobody prepares materials in advance, because the answers are pulled live. Once that rhythm holds, you extend access to the rest of the team.\n\n::content-cta\n---\neyebrow: Free trial\nheading: Ask about your data in plain language — still within the free trial\ndescription: \"Let's meet: we'll connect the assistant to your data and walk through the first questions on your own project.\"\nbuttonText: Book a call\nbuttonHref: /contact\n---\n::\n\n# Organized data finally starts paying for itself [Summary]\n\nNo MCP will take the job of organizing your data off your hands, and nobody should honestly promise that. What it does instead is visible from the first week: that order starts paying off daily, rather than once a quarter, when someone finally gets around to building a report on it.\n\nAI connected to a mess speeds up exactly one thing: how fast you make the wrong call. Connected to an organized, documented source, with your business context on hand, it shortens the path from question to action from days to minutes — and it does that for the whole team, not just for the person who knows SQL.\n\nThat's why the assistant is worth switching on last, even though it looks the most impressive of the lot. The warehouse, the audit, the KPI tree, the segmentation — all that work only stops sitting in panels nobody opens more than once a month once the assistant is there.\n\nInstead of asking about your data once a month — talk to it every day.\n\n::content-cta\n---\neyebrow: AI Assistant\nheading: See the assistant on your own data\ndescription: \"We'll show you how to connect WitCloud MCP to the tool you already use — and what's worth asking in the first week.\"\nbuttonText: Book a call\nbuttonHref: /contact\n---\n::\n","6","15 min read","Put AI to work on your data — automate analysis, surface insights, and act faster.","content-page",{"id":274,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":275,"copyright":19,"fieldtype":21,"meta_data":276,"is_external_url":32},211422661063029,"https://a.storyblok.com/f/296300/1920x1080/ed3be32940/18-ai-assistant-thumbnail.png",{},[278,281,285,289,293],{"_uid":279,"name":237,"content":280,"component":239},"b1a30001-0000-4000-8000-000000000001","Connecting AI to your data isn't the same as making it understand it. See what WitCloud MCP adds — and why the answer holds up in a meeting.",{"_uid":282,"name":283,"content":284,"component":239},"b1a30001-0000-4000-8000-000000000002","og:title","Ask your data in plain language, not in a ticket",{"_uid":286,"name":287,"content":288,"component":239},"b1a30001-0000-4000-8000-000000000003","og:description","ChatGPT, Claude or Gemini on your own BigQuery - reading your documentation, business context and market grouping first. Answers during the meeting, not in two days.",{"_uid":290,"name":291,"content":292,"component":239},"b1a30001-0000-4000-8000-000000000004","og:image","https://a.storyblok.com/f/296300/900x600/63c278d1b3/18-ai-assistant-dark.png",{"_uid":294,"name":295,"content":296,"component":239},"b1a30001-0000-4000-8000-000000000005","twitter:card","summary_large_image","Ask your data in plain language - WitCloud AI assistant",[],"2026-08-24 00:00",[],"ai-assistant-in-business","content/framework/ai-assistant-in-business",-110,[],191214118803361,"e542adf0-91f1-4bab-87ae-0551d93d8942",[],{"name":309,"created_at":310,"published_at":311,"updated_at":312,"id":313,"uuid":314,"content":315,"slug":342,"full_slug":343,"sort_by_date":169,"position":344,"tag_list":345,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":346,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":347,"default_full_slug":169,"translated_slugs":169},"Product Perspective","2026-06-25T07:32:53.996Z","2026-08-30T18:38:23.366Z","2026-08-30T18:38:23.391Z",191214280722347,"7371a7d3-6a01-4fb1-a591-79dfa4bc3d28",{"_uid":316,"title":309,"content":317,"eyebrow":109,"showTOC":39,"category":19,"priority":318,"readTime":319,"subtitle":320,"component":272,"eventDate":19,"heroImage":321,"meta_tags":325,"meta_title":338,"eventFormat":19,"heroButtons":339,"updatedDate":340,"bottomBlocks":341},"0a259426-0bb2-4a0c-a483-6e3a7187289e","# You have two levers left: budget and segmentation. Both run on data that isn't in your feed [Budget & segmentation]\n\nOver the past few years, ad platforms have steadily taken control away from marketers. Performance Max — the campaign type where Google itself splits the budget across Search, YouTube, Gmail, and the Display Network — decides where to show up, who to show the ad to, and what bid to pay. Meta's Advantage+ works on the same principle. Manual bids are gone, manual network splits are gone, and to a large extent so is manual audience targeting and creative assembly.\n\nThis isn't a bad change. The algorithm bids faster and more consistently than a human ever could, and most of the manual optimizations from five years ago would just get in the way today.\n\nThe algorithm allocates money on its own: it decides how much to spend on which product, where, and at what time of day. Only two things constrain it — **how much it can spend in total** and **what it has to work with**. You set the first in the campaign. The second depends on what you tell it about your assortment — and most stores tell it almost nothing.\n\n# The challenge in short [The challenge]\n\nThe whole thing in five sentences, before we get into details.\n\n- The feed you send to Google and Meta describes your products exactly the way your competitors' feeds describe theirs. It contains no margin, no stock levels, no turnover, and no sales from outside your store.\n- You already have this data — it just sits in systems that don't talk to each other. All it takes is calculating it together and adding it to the feed as a supplemental file, without touching the original.\n- You write the result into labels: profitability, stock situation, product role, clearance status. These are what split your catalog into campaigns — and therefore decide where the money flows.\n- Labels need to be stable. Without that, products drift between campaigns every few days and the algorithm has nothing consistent to learn from.\n- After that it's a rhythm: on a fixed schedule, you check what's changed, what's at risk of running out, and where to shift budget.\n\nThe rest of the article is an expansion of these five points.\n\n# What this looks like today in almost every store [What it looks like today]\n\nThe path is basically the same everywhere. The store runs on some platform — Shopify, Magento, PrestaShop, WooCommerce. A plugin or a simple export generates a **product feed** from it: a file listing every product, built to Google's specification. Inside: ID, name, price, availability, category, brand, and image. The file goes to **Merchant Center**, Google's product catalog, and campaigns are fed from there. The same file, usually unchanged, goes to Meta in parallel.\n\nAnd it all works. The feed passes validation, products show up, campaigns bring in sales. No one feels like anything is missing, because nothing is broken.\n\nThe thing is, this file describes your products exactly the way any other store in your category would describe theirs. Name, price, availability, image — your competitors send Google a file built from the same spec, the same fields. It doesn't contain a single piece of information about what you actually make money on, what's about to run out, what brings in customers who come back, or what sells brilliantly outside your store.\n\nThe second version of the same path looks like this: you take that exact same feed and add a second layer on top of it along the way. You're not buying new data for this — you're assembling it from data you already have, just scattered across systems that don't talk to each other. Calculated together and appended as a supplemental file, they change exactly one thing: how much the algorithm knows about your products. The original feed stays untouched.\n\n![Two paths for the same product feed](https://a.storyblok.com/f/296300/1d7245c14f/product-perspective-01-dwie-sciezki-feeda.png)\n*Two paths for the same product feed*\n\nThis whole article is about that second layer: where it comes from, exactly what to put in it, and how to use it day to day.\n\n# The feed became a control panel, not just a catalog [The feed as control]\n\nIn product campaigns, you don't bid on keywords — there's nothing to set. The role that campaign structure used to play is now taken over by how you split the catalog. It's the feed that decides what the algorithm can even group together, and therefore what you can actually control with budget. **This is where your two levers come back: money and assortment.** One doesn't work without the other — a budget without a catalog split is just one big pile the system draws from however it likes.\n\nGoogle lets you split the catalog within a campaign by category, product type, ID, brand, condition, and channel. Any other split — that is, anything that comes from your business rather than from the product description — requires **custom labels**. These are simply extra columns in the feed where you enter your own value: \"high margin\", \"clearance\", \"new arrival\". In the campaign, you can then use them to build a separate product group or a separate campaign with its own budget. You get five such columns, you can put whatever you want in them, they're visible only in your own ad account, and you can change them whenever you like.\n\nFive fields. In most stores, two of them are filled in, statically, and no one has touched them in two years — usually \"season\" and \"clearance\".\n\nThat's your entire control panel in a world where everything else happens automatically.\n\n# What the ad platform knows, and what it can never calculate [What the platform doesn't know]\n\nThere's a common oversimplification that platforms \"know nothing about products.\" That's not true. They know quite a lot: impressions, clicks, sales, and cost at the level of a single product, often even a single variant — a specific model in a specific size and color. They're good at this.\n\nWhat they don't know is your business:\n\n| What the platform sees | What your business knows |\n| --- | --- |\n| in stock | 3 units left, 6 days of coverage at the current pace |\n| in stock, conversions look fine | only sizes XS and XXL are left — the customer clicks, doesn't find their size, and buys something else |\n| price: $89 | margin after discounts and returns: 11% |\n| conversions are climbing | but this product is a one-time purchase and the customer doesn't come back |\n| conversions are low | but after this product, customers most often come back for a second purchase |\n| conversions are weak | the same product is a bestseller on the marketplace |\n| no data — the product never got a budget | it's been selling steadily on the marketplace for six months and has never once been advertised |\n| no signal | 20% of the entire business's revenue — store, marketplaces, and in-person sales combined — rests on this one SKU |\n\nYou can't just see the right-hand column. You have to calculate it — by joining data that today sits in several different places — and then hand it to the ad platforms in the only form they'll accept: a label.\n\nSales from outside the store deserve their own callout. Google and Meta only see what happens on your website, so they pile budget onto products that are already converting there. They have no way of knowing that a mediocre performer in your store is actually a bestseller on a marketplace like Amazon — and that's usually the strongest signal you have that a product is worth testing in ads. Without this information, the automation keeps consistently scaling what already works, and never reaches for the assortment your business has known for ages actually sells.\n\nThe worst part is that the same mechanism works on your side too. A product never makes it onto the list of things worth featuring in a campaign, because it never showed good results there — and it never showed good results because it never got a budget. Meanwhile, it's been selling steadily somewhere else for six months. The way out of this loop won't come from the ad account, because as far as the ad account is concerned, this product barely exists.\n\n![Store and marketplace sales compared against ad spend](https://a.storyblok.com/f/296300/265bb086d7/product-perspective-02-sprzedaz-sklep-marketplace.png)\n*Store and marketplace sales compared against ad spend*\n\nSince this information lives neither in the feed nor in the ad account, the question is where the system is supposed to get it from. Here's the full list of sources — none of them will send anything to Google on their own.\n\n**Where this data comes from**\n\n- **CRM or ERP** — the system where you keep orders, stock, and purchase prices — stock levels and variants, your own attributes, margins, and sales from your store and from other channels, including marketplaces and in-person sales.\n- **GA4**, i.e., Google Analytics — traffic to the product page, user behavior, sales effectiveness, revenue broken down by channel.\n- **Google Ads** — impressions, clicks, cost, and sales at the level of a single product.\n- **Meta Ads** — the same thing, product by product.\n- **Merchant Center**, Google's product catalog — free listing visibility, product disapprovals, and price position. That last one is an underrated source: if your product has an EAN or GTIN also used by other sellers, Google can compare your price to the market and tell you whether you're clearly cheaper, comparable, or clearly more expensive. Reading this daily turns it from a curiosity into a signal.\n\nOne methodological decision here matters more than all the integrations combined: **revenue has to be calculated from a single source.** Google reports its own sales value, Meta reports its own, each counts things its own way, and each takes credit for the same orders. Add them up and you get a number that doesn't exist in your P&L — and as long as every channel is graded on its own yardstick, comparing them to each other doesn't mean anything.\n\n# Five dimensions for evaluating a product [Five evaluation dimensions]\n\nA proper evaluation means looking from five angles at once:\n\n- **Performance** — traffic, conversion, and ROAS, i.e., revenue per unit spent advertising this product, measured against its own category, not the whole catalog.\n- **Stock** — not \"in stock,\" but how many units, in which variants, and for how many days.\n- **Turnover** — how fast it's moving, whether it's speeding up or slowing down, and how long it's been sitting.\n- **Business impact** — margin, share of revenue, how much the overall result depends on this one SKU.\n- **Strategic role** — whether it's an entry-level product, a seasonal one, an image product, or one that sells modestly on its own but pulls the rest of the cart along with it.\n\nThis last dimension is the one most often skipped — and it can be the most expensive to ignore, which is why it gets its own section right below.\n\n![The five product evaluation dimensions, written as questions](https://a.storyblok.com/f/296300/f7d3d2777c/product-perspective-03-piec-wymiarow-oceny.png)\n*The five product evaluation dimensions, written as questions*\n\n# Products whose value lies outside their own numbers [Value beyond the numbers]\n\nThe ad platform judges a product by its own sales. That's convenient, and it's enough most of the time — but there are three situations where this kind of scoring systematically undervalues a product, and usually it's exactly the products you care about most.\n\n**The cart-puller.** It sells modestly on its own, drives plenty of traffic, and converts poorly — but the orders it appears in are noticeably larger than average. The customer lands on its page, ends up buying something else, and the conversion gets credited to whatever actually landed in the cart. In the campaign report, this product looks like a candidate to cut.\n\n**The gateway product — the one customers come back after.** The first purchase has average value, but people who started with this product come back for a second order far more often than everyone else. No attribution window catches this, because the second purchase arrives weeks later, often through a different channel, with no visible link to the original campaign. This information is produced on the customer-analysis side, and only from there can it flow back into the catalog as a label. More on this in a separate article on working with your customer base.\n\n**Acquisition product vs. repeat-purchase product.** This distinction is even more practical, because it leads straight to a campaign split. Part of your assortment is great for attracting someone who doesn't know the brand yet: low barrier to entry, a simple choice, a price that makes the decision easy. A completely different set works when you want to talk someone who has already bought from you into a second or third order — because here it's brand trust doing the work, not a price incentive.\n\nIf both pools sit in the same campaign, you're grading them against the same threshold even though they're doing completely different jobs. An acquisition product can have a lower return and still be the best investment in the catalog, as long as it brings in customers who stick around. A repeat-purchase product makes no sense in a reach campaign, because it's shown to people who have no reason to want it yet.\n\nThe conclusion is the same in all three cases: **a product has to be judged by the role it plays, not just by its own numbers.** Role is another dimension you can calculate and send to the ad platforms as a label — and without it, the algorithm keeps consistently cutting budget exactly where it should be increasing it.\n\n![A product's own sales vs. the sales it pulls along with it](https://a.storyblok.com/f/296300/add42187ef/product-perspective-04-wlasna-sprzedaz-koszyk.png)\n*A product's own sales vs. the sales it pulls along with it*\n\n# STEP 1: build the labels layer [Step 1: labels]\n\nYou have five columns for your own labels and complete freedom in what you put there; Meta builds product sets from those same fields.\n\nFive columns sounds like very little if you think of them as the place where all your catalog knowledge has to fit. That's exactly the wrong way to think about them. **On the analysis side, there are as many dimensions as you need** — performance rating, stock situation, channel structure, clearance status, cart role, plus operational flags like \"new arrival in test phase\" or \"blocked by manager decision.\" The five feed fields aren't that whole set — they're the window through which selected conclusions go out to the ad platforms.\n\nWhat goes out to the ad platforms is however much fits and however much you actually need to steer budget. The rest stays on the analysis side and is used for making decisions, not for targeting.\n\nAn example split of what's worth pushing out:\n\n| Dimension | What it's for | Example values |\n| --- | --- | --- |\n| Performance | main budget split | core performer, scale up, in test, watch list, paused |\n| Stock situation | protects against spending on stock that's about to run out | long coverage, a couple weeks of coverage, a few days of coverage, out of stock |\n| Channel structure | where the product actually sells | paid-dominant, organic-dominant, marketplace-dominant, evenly spread |\n| Clearance status | separates normal sales from liquidation | normal, watch list, clearance |\n| Season or campaign | a field for the team to override manually | depends on the calendar |\n\nThe first four fill in automatically and change along with the data. The last one stays open for the team — for seasons, holidays, and promotions that no algorithm will predict.\n\nThis is a starting point, not a canon. Depending on your catalog, other dimensions can matter more, and it's worth considering giving one of the five fields to:\n\n- **Price band** — a classic that works almost everywhere. A $12 product and a $220 product have a different purchase path, a different decision time, and a different reasonable acquisition cost — and dumped into one campaign, they get graded against a shared threshold that's wrong for both of them.\n- **Price position vs. the competition** — whether you're clearly cheaper, comparable, or clearly pricier than the market on this product. Where you're cheaper, it's worth pushing harder, because the advantage will do its work anyway. Where you're clearly pricier, a weak campaign result isn't a campaign problem, and throwing more budget at it won't fix it.\n- **Product role** — whether it mainly sells itself, pulls the cart along, or is a gateway customers come back through. This is also where you separate acquisition products from repeat-purchase ones — and that split almost always ends up as two separate campaigns with two separate thresholds.\n- **Supplier or private label** — if margins between suppliers differ enough to justify separate budgets.\n\n![Share of ad spend by price position, with average ROAS](https://a.storyblok.com/f/296300/62cd321cdc/product-perspective-05-udzial-wydatkow-roas.png)\n*Share of ad spend by price position, with average ROAS*\n\n**This isn't a one-time setup.** Labels get designed, watched, and corrected: you analyze how products behave in each group, check whether the split is actually separating what it was meant to separate, and move the thresholds. A catalog looks different after a year than it did at the start, so the definitions have to keep up.\n\nAt this stage, the most useful thing is being able to just ask the question directly: where does a sensible margin line fall in this catalog, how many products land on each side of the threshold, and how would that change budget distribution. Instead of clicking through a dozen views, you ask the question and get an answer along with the reasoning behind it.\n\n**The thresholds are yours, not ours.** What margin makes a product profitable, how many days of coverage counts as a risk, what \"slow turnover\" means — in seasonal fashion these lines look different than in household chemicals or electronics. The first setup is built around your catalog and delivery cycle, then corrected based on what actually happens.\n\nOne thing worth remembering from the start, because it has direct budget consequences. You used to be able to set a separate cost-per-click for each product group. With automated bid strategies — where you give the system a goal and it bids on its own — there are no bids to set anymore, so splitting into groups inside a single campaign gets you, at best, a nicer-looking report. If you actually want to control money, each group needs to land in **its own campaign with its own budget**.\n\n![The analytics layer and the five label fields in the feed](https://a.storyblok.com/f/296300/21b23cc8f8/product-perspective-06-warstwa-analityczna-etykiety.png)\n*The analytics layer and the five label fields in the feed*\n\n# STEP 2: watch the changes, not just the snapshots [Step 2: changes]\n\nThe catalog split by itself is just a snapshot from one day. The real value starts where you can see **movement between groups** — exactly the way customer analysis looks at people moving from new to returning, not just at how many new customers you have today.\n\nIt looks like this. A product that's only been in testing for the past few weeks starts delivering sales and should get a bigger budget. Another one, previously a core performer, is weakening and no longer deserves priority. A third disappears from ads entirely because it's run out of stock.\n\nEvery such change has its own reason and its own moment, and it's worth having both recorded — together with the numbers that applied at the time. That way the question \"why is this product in this campaign now\" has an answer, not a guess.\n\nThis changes the nature of the morning review. Instead of reading through the entire catalog from scratch, you look at a list of changes from the past week: what moved up, what moved down, what disappeared, and why. Or you simply ask, in one sentence, and get a summary instead of a table to scroll through. Across a few thousand SKUs, that's the difference between a report you skim and a report you actually read.\n\n![Product group changes over the past month and the sales behind them](https://a.storyblok.com/f/296300/6a263912ff/product-perspective-07-zmiany-grup-produktowych.png)\n*Product group changes over the past month and the sales behind them*\n\n**A label can't flip-flop**\n\nThere's a trap here that's easy to trip over during a first rollout. If a label recalculates every day and can change every day, a product starts drifting between campaigns day to day — bestseller today, watch list tomorrow, back again the day after. For you, that's chaos. For the algorithm, which needs data continuity to learn anything at all, it's sabotage.\n\nThat's why a label change can't happen instantly. The condition needs to hold for a set period — a different one for moving up than for moving down, since it should be easier to earn a promotion than to lose one, because a single bad week shouldn't erase a good quarter. The exception is running out of stock, which takes effect immediately, since there's nothing to wait and see there.\n\nThe second rule is about people. When a manager deliberately makes a decision against what the automation says, that decision has to be protected for some period — otherwise the next day's recalculation overwrites it and no one understands why. Automation only takes back over after that period.\n\nThese two rules look like a technical detail, but they decide whether the rollout survives at all. Without them, the first month looks great and the third ends with someone saying \"this keeps flipping anyway, let's just go back to doing it manually.\"\n\n![The same label recalculated daily vs. with a required confirmation period](https://a.storyblok.com/f/296300/6c9210bf68/product-perspective-08-etykieta-okres-potwierdzenia.png)\n*The same label recalculated daily vs. with a required confirmation period*\n\n# STEP 3: manage for profitability, not revenue [Step 3: profitability]\n\nThe automation is graded on revenue, because that's the only value you hand it. The effect can look like this:\n\n- Product A: ROAS 8, margin 12%. Out of $100 in revenue, $12 is margin, against $12.50 in media cost. Result: a loss.\n- Product B: ROAS 3, margin 55%. Out of $100 in revenue, $55 is margin, against $33 in media cost. Result: $22 in profit.\n\nIn the campaign report, the first product looks almost three times better. In the P&L, it's the only one losing money.\n\n**You are not sending your margin to Google.** This worry stalls a lot of rollouts before they even start, so let's settle it right away. What goes into the feed is a bucket, not a number: \"high\", \"medium\", \"low\". The actual figures, purchase prices, and supplier agreements stay on your side, in your own Google Cloud. The ad platform only gets told that this group of products is worth defending harder than that one — with no visibility into why.\n\nIt's worth checking one more thing while you're at it, because it can shift the whole calculation. A store usually reports sales gross, while media costs are net. So before you even get to margin, returns, and logistics costs, the ROAS shown in the dashboard is already inflated by the tax rate. At a 20% VAT rate, a dashboard ROAS of 5.0 is actually a little over 4.0 on comparable terms — and that's often the difference between a campaign that holds up and one that doesn't.\n\nOnce margin information sits in a label, this stops being a theoretical problem. High-margin products land in campaigns with a bigger budget and a more relaxed return requirement — you can afford to pay more for them. Products you're losing money on land in campaigns with a threshold tight enough that the system cuts their spend on its own, or they disappear from ads until the price changes.\n\n**10% of your products probably account for most of your revenue — but not for anywhere near the same share of margin.** The more these two rankings diverge, the more budget the automation steers toward what looks like a win in the report but isn't one in the P&L.\n\nSetting profitability thresholds is, in fact, a classic question that's better answered by a conversation with your data than by a spreadsheet: how much would you lose if you cut everything below a certain margin, and whether you'd accidentally be cutting cart-pulling products along with it.\n\nIt's worth comparing every product against its own category average, not against the whole catalog's average. A ROAS of 4 in electronics, where margins are thin and prices are high, means something completely different than the same ROAS in accessories. A shared threshold across both categories moves budget in the wrong direction — while still looking like a data-driven decision.\n\n![The same products ranked by revenue vs. by profit](https://a.storyblok.com/f/296300/196a29b0f3/product-perspective-09-produkty-przychod-zysk.png)\n*The same products ranked by revenue vs. by profit*\n\n# STEP 4: treat stock as a signal [Step 4: stock]\n\nA scenario everyone who runs product campaigns knows. On Monday, ROAS is on target, revenue is growing, everything looks fine. On Tuesday, ROAS collapses, revenue drops, and everyone starts hunting for the cause in the campaigns, in the auction, in seasonality. The cause is in the warehouse: a product responsible for a big chunk of sales has run out.\n\nBy that day, there was nothing left to do. But it could have been seen two weeks earlier.\n\nThe feed knows two states: in stock and out of stock. To manage budget, you need four answers.\n\n**How much is left and for how long.** Not \"in stock,\" but coverage in days at the current sales pace. A product with eight days of stock left, while it's simultaneously pulling in a growing budget, is a situation that calls for a decision — pull back, speed up the next delivery, or deliberately sell through the remaining stock.\n\n**How much this product means for the result.** Coverage on its own says nothing until you know how much money flows through this product: how much you spend on it, how much you make on it, and what share of revenue it holds. Only together do they answer the question that actually matters — **what happens to the result when it runs out.** Knowing this two weeks ahead turns the conversation from explaining away a bad result into planning. The question \"what happens to the result if these three products run out next week\" is, in fact, exactly the kind of question you'll get answered faster in a conversation with your data than by digging through a report.\n\n**That a product dropped out of the feed.** Stock ran out, the listing vanished from ads, and no one noticed for a week, because nothing broke — it just stopped existing.\n\n**That a product is only nominally in stock.** The trickiest case, because it doesn't look like a failure. The model still shows \"in stock,\" but only the lowest-selling sizes are left. The system sees availability and keeps promoting it — the ad still collects clicks, and some of those clickers buy something anyway, just a different product. The conversion gets credited to whatever they actually clicked into, so nothing flashes red in the report. You're paying for traffic to a listing you can't actually sell, and the algorithm has no way of learning that something's wrong. We call this variant erosion, and in stores that sell by size it's one of the more common hidden causes behind declining results.\n\nOne important thing a stock label should **not** do: automatically cut a product from the campaign. Low coverage is information for a human, not a verdict — sometimes you actually want to sell through the last units, and sometimes the next delivery arrives Friday. Only what's physically out of stock drops out of ads automatically. Everything else is an alert and a decision.\n\n![Ad spend and remaining stock for four products](https://a.storyblok.com/f/296300/7b992b53e2/product-perspective-10-wydatki-zapas-cztery-produkty.png)\n*Ad spend and remaining stock for four products*\n\n![One product's disappearing sizes while its budget stays unchanged](https://a.storyblok.com/f/296300/dc13bf11f5/product-perspective-11-znikajace-rozmiary.png)\n*One product's disappearing sizes while its budget stays unchanged*\n\n# STEP 5: give new arrivals their own budget [Step 5: new arrivals]\n\nA product with no history can't be judged by any of the five dimensions. Dropped into a shared campaign, it loses to listings that already have data — the automation has something to choose from, and it chooses what already works. A new collection starts from a worse position every single time.\n\nThis is exactly the case where your only real lever — budget — has to be used deliberately. A new arrival needs its own campaign, its own pool of money, and a window in which the normal evaluation rules are suspended — because judging a product with no data against the usual thresholds ends with it getting shut off before it can show anything. You also need an exit threshold set in advance: after how much time and what result the product gets its target label.\n\nThe same bucket includes products that aren't new to your business, just new to advertising: they're selling on marketplaces or in a physical store, but campaigns have never given them a budget. They have a sales history — it's just recorded somewhere the ad platform never looks. From a testing standpoint, these are the best candidates in the whole catalog, because the risk is lower than with a genuine new arrival — someone has already proven this product gets bought.\n\n![A new product's test window and its three possible outcomes](https://a.storyblok.com/f/296300/b06c667ee5/product-perspective-12-okno-testowe-nowosci.png)\n*A new product's test window and its three possible outcomes*\n\n# The second lever: audience segmentation [Audience segmentation]\n\nThe same mechanism works on the people side. The automation decides on its own who to show the ad to, but only within whatever you give it — and you're the one who builds the audience lists.\n\nThis is where the two analyses meet. Which products customers come back for a second purchase after comes out of customer lifecycle analysis and flows back into the catalog as a label. And the other way around: customer segments feed exclusion lists and lookalike audiences. The catalog and the customer base are two sides of the same segmentation, not two separate projects.\n\nMore on this in a separate article on working with your customer base.\n\n# What this is built from [What it's built from]\n\nEverything above is a way of working — but someone has to keep it running. That's what WitCloud does: the platform we deploy on your own data. Data from your CRM, GA4, Google Ads, Meta Ads, and Merchant Center flows into a single set of product tables that recalculates every day. You don't have to build or wire any of it together yourself.\n\nThree things run on this same foundation:\n\n- **Reports and analysis** answer the question of what's happening and why. Profitability, turnover, stock coverage, variant erosion, movement between groups, new-arrival performance.\n- **Label export** answers the question of how to put it into action. The conclusions come back as supplemental files — extra sheets that add columns to your existing feed without touching the original. They feed custom labels in Google and product sets in Meta.\n- **WitCloud MCP** is the conversational layer on top of the data. You ask in plain language and get conclusions and recommendations in the context of your industry.\n\n**The key consequence: you define a label once.** \"Product at risk of running out\" means the same thing in the report, in Google, and in Meta. There aren't three different definitions of \"bestseller\" across three tools, and no manually-set labels that go stale within a week.\n\nThe module also works when you don't have the full set of sources. Without a CRM you can't calculate margin or stock coverage, but performance evaluation and budget splitting still work normally — missing data means a narrower range of labels, not no rollout at all.\n\n![From a chat question to labels in the ad platforms](https://a.storyblok.com/f/296300/b71b13935d/product-perspective-13-od-pytania-do-etykiet.png)\n*From a chat question to labels in the ad platforms*\n\n# How this differs from Merchant Center rules [Merchant Center rules]\n\nThe most obvious objection is: I already have rules and custom labels. Four differences:\n\n**Rules can only see what's already in the feed.** They can't calculate margin, media cost, marketplace sales, or repeat-purchase behavior, because that data isn't in the feed and never will be.\n\n**A manual label goes stale within a week.** A product tagged \"bestseller\" on Monday can be out of stock ten days later. The label stays.\n\n**A rule has no memory.** It doesn't know a product has only been in this group for three days and drops out of it after one bad weekend. It can't tell a lasting change apart from a blip.\n\n**No one measures it after rollout.** The label split gets built once, as part of some project, and no one ever comes back to ask whether it changed anything.\n\n![Merchant Center rules vs. labels calculated from data](https://a.storyblok.com/f/296300/ddf1d2e7bf/product-perspective-14-reguly-merchant-center.png)\n*Merchant Center rules vs. labels calculated from data*\n\n# This is a process, not a one-off project [A process, not a project]\n\nA catalog moves faster than a customer base. Stock changes daily, a season shift can flip turnover within a few weeks, and a new collection can turn the whole ranking upside down. A product evaluation done once stays current for a shorter time than almost anything else you calculate in the business.\n\nThe work splits into three layers, and only the first one happens without your involvement.\n\n![How the work splits between the system, the marketing team, and your decisions](https://a.storyblok.com/f/296300/99f73cd334/product-perspective-15-podzial-pracy.png)\n*How the work splits between the system, the marketing team, and your decisions*\n\n1. Data and labels — the system does it\n\nSales, stock, variants, margins, and media costs flow in daily and join up on their own. Labels recalculate from scratch, but only change once the change is lasting. Every change gets recorded with a reason and the numbers that applied at that moment. Supplemental files are ready in their current version, with no manual spreadsheet assembly.\n\n2. Campaigns — the marketing team does it\n\nA label doesn't sell anything by itself. Someone has to build structure on top of it:\n\n- **In Google Ads and Meta Ads:** splitting campaigns by label and assigning them separate budgets, different performance goals for different profitability tiers, separate campaigns for clearance and for new arrivals.\n- **In creative and on product pages:** a different message for clearing out aging stock, a different one for a new arrival with no history, a different one for a product whose job is to pull up the cart rather than maximize its own sales.\n\nThis is real work, and it's heaviest at the start: the first few weeks are spent rebuilding campaign structure around the labels. After that, it's adjustments, not building from scratch.\n\nYou don't need a new department for this, but you do need clearly assigned ownership — these campaigns have to be someone's actual scope, not a side task done in passing. Who that is depends on how your marketing is set up: your own team, or the agency that already runs your campaigns.\n\n3. Decisions — they're yours\n\nWhat margin makes a product worth a budget, when to mark down aging stock instead of advertising it, whether to pull back a campaign at low coverage, how much money to put into testing new arrivals, where to move the thresholds after the first quarter. These are business decisions, not calculations.\n\nMCP takes you as far as it possibly can: it gives you the numbers, points out what follows from them, and frames recommendations in the context of your industry. The last step stays on your side. If you want someone to talk it through with, we step in as advisors.\n\n**Rhythm: a fixed point on the calendar**\n\nYou need one fixed slot where three people sit down together: someone from product campaigns, someone from buying or assortment management, and someone who decides on prices and markdowns. How often depends on how fast your catalog turns over; with fast turnover and strong seasonality, more often makes more sense. What matters more than frequency is that the slot is fixed.\n\nFive questions for every check-in:\n\n1. What's changed since last time — what moved up, what moved down, what disappeared?\n2. Which products are at risk of running out, and what will the impact on results be if they do?\n3. Where are variants eroding, and which campaigns are already feeling it?\n4. How did new arrivals from the last test window perform?\n5. Which thresholds need correcting, and are budgets still sitting where they should be?\n\nNo materials need preparing, because the reports are already there, and you pull the answers from MCP during the meeting itself.\n\n**In this process, we're your advisor, not your executor.** We work on three things: setting up labels and thresholds for your catalog, analyzing what the numbers mean, and running the rhythm in which you measure results and pick the next move. The campaigns stay yours — we're responsible for making sure they know what they're promoting and why.\n\n![The product view you come back to every week](https://a.storyblok.com/f/296300/64a4fb5924/product-perspective-16-widok-produktowy.png)\n*The product view you come back to every week*\n\n# Where to start [Where to start]\n\nYou need traffic data from GA4 and cost data from Google Ads and Meta Ads — that's the minimum needed for performance evaluation and budget splitting. Stock, variant, and margin data from a CRM or ERP unlocks the entire stock and profitability layer. The rest is configuring thresholds for your catalog and delivery cycle.\n\nOn the team side: clearly assigned ownership of product campaigns, and one regular check-in.\n\n# Summary [Summary]\n\nThe more ad platforms do on their own, the more what you feed them matters. Bidding, targeting, and creative selection are already out of your hands — what's left is budget and segmentation.\n\nThe feed answers the question of what you're selling. The label layer answers the question of what's worth selling, to whom, and for how much longer you can keep doing it — and then carries that answer to wherever you spend your money.\n\n::content-cta\n---\neyebrow: Free trial\nheading: See your catalog as a budget control panel — during your free trial.\ndescription: \"Let's talk: we'll show you the WitCloud module running on your own data — with labels, priorities, and profitability thresholds built around your catalog.\"\nbuttonText: Book a call\nbuttonHref: /contact\n---\n::\n","5","30 min read","See how your products perform, which drive growth, and which drag it down.",{"id":322,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":323,"copyright":19,"fieldtype":21,"meta_data":324,"is_external_url":32},191285268971115,"https://a.storyblok.com/f/296300/900x600/0a227d486d/17-product-perspective-dark.png",{},[326,329,332,334,336],{"_uid":327,"name":237,"content":328,"component":239},"b2c10001-0000-4000-8000-000000000001","Turn your product feed into a budget control panel — see how profitability, stock, and product role should drive your ad spend, not just clicks.",{"_uid":330,"name":283,"content":331,"component":239},"b2c10001-0000-4000-8000-000000000002","Product Perspective — WitCloud",{"_uid":333,"name":287,"content":328,"component":239},"b2c10001-0000-4000-8000-000000000003",{"_uid":335,"name":291,"content":323,"component":239},"b2c10001-0000-4000-8000-000000000004",{"_uid":337,"name":295,"content":296,"component":239},"b2c10001-0000-4000-8000-000000000005","Product Perspective - WitCloud Product Analysis",[],"2026-08-20 00:00",[],"product-perspective","content/framework/product-perspective",-90,[],"af59a5e0-7ba8-4c82-b164-b9569a233ab6",[],{"name":349,"created_at":350,"published_at":351,"updated_at":352,"id":353,"uuid":354,"content":355,"slug":381,"full_slug":382,"sort_by_date":169,"position":383,"tag_list":384,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":385,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":386,"default_full_slug":169,"translated_slugs":169},"Customer Perspective","2026-06-25T07:32:49.223Z","2026-08-30T18:38:38.092Z","2026-08-30T18:38:38.110Z",191214261176233,"059f461a-adc2-48ae-915e-63a609a937fc",{"_uid":356,"title":349,"content":357,"eyebrow":109,"showTOC":39,"category":19,"priority":358,"readTime":270,"subtitle":359,"component":272,"eventDate":19,"heroImage":360,"meta_tags":364,"meta_title":377,"eventFormat":19,"heroButtons":378,"updatedDate":379,"bottomBlocks":380},"940a2169-98e0-4e6c-b473-32687b00eac8","Advertising keeps getting more expensive. The same budget that brought in customers a year ago brings in fewer today, and each additional one costs more than the last. There are two natural reflexes, and both fail. You can pour more into the budget — but auctions get more crowded, so doubling spend doesn't double sales. You can pull back and focus on existing customers — but then the base stops growing, and the same problem returns in a few months, just with fewer customers. The way out is somewhere most stores don't look: what happens to a customer after their first purchase. That's the knowledge that tells you how much a new customer is actually worth — and therefore how much you can afford to pay to acquire one, so acquisition adds up again.\n\nWe show how to analyze buyer behavior and turn that knowledge into actions that increase revenue from existing customers and make acquiring new ones worthwhile again.\n\n![Share of customers vs. share of revenue, by number of orders placed](https://a.storyblok.com/f/296300/fddcd57b3c/customer-perspective-01-liczba-zamowien-przychod.png)\n*Share of customers vs. share of revenue, by number of orders placed*\n\nIn the store we ran this analysis on, 61% of customers bought exactly once, and together they account for 22% of revenue. Meanwhile, the 8% of customers with five or more orders bring in 44% of revenue — almost half. Your proportions will differ, but the shape usually repeats: the largest group contributes the least, and the smallest group drives the result.\n\n# Two levers you have to pull together [Two levers]\n\nWorking with your customer base isn't about giving up on advertising. The effect only comes from combining two things:\n\n- **Retention.** Precisely identify which customers need attention and how to help them buy more, more often.\n- **Acquisition.** Combine customer behavior data with traffic and ad cost data. That tells you which customers are worth acquiring and which products to attract them with, so you build high LTV from day one.\n\n# Starting point: see the customer, not just the transaction [Starting point]\n\nMost reports only answer one question: how much did we sell today? Working with the customer base requires deeper questions: who's actually buying from us, what happens to them after their first order, and how much are they worth to us over time?\n\nTo measure this, we build a customer lifecycle map from three signals: how recently the customer bought, how many times they've bought, and how much they're worth relative to their own average order value. That produces over a dozen precise segments, which group into five readable stages:\n\n- New\n- Returning\n- Loyal (split into standard and highest-value)\n- At risk of churning\n- Lost / won back\n\nThe thresholds are yours, not ours. How many days without a purchase means a customer is at risk? How many means they're lost? What value makes a customer your most valuable one? In fashion, these lines look completely different than in supplements or cosmetics. You set them all around your actual purchase cycle — and that's the difference between segmentation that describes your business and segmentation that forces someone else's template onto it.\n\n**The two transitions that matter most**\n\nCustomers are constantly moving between stages, but not every transition carries equal weight:\n\n- **From first to second purchase.** A one-time purchase can be a fluke. Only the second turns a buyer into a customer. Customers who never came back are usually the largest and most underrated group in the base.\n- **From returning to loyal.** This is where it gets decided whether a customer stays with you for years.\n\nEvery such move has a name and a size — from a customer promoted into your most valuable group, through a warning about rising churn risk, to a confirmed loss. Instead of asking whether you're losing customers, you see how many, from which segment, and in which direction.\n\n![What happened to each customer group over twelve months, as a share of the starting group](https://a.storyblok.com/f/296300/a719b942f2/customer-perspective-02-przeplywy-segmentow.png)\n*What happened to each customer group over twelve months, as a share of the starting group*\n\nLook at the \"New\" row: 21% churned within one comparison period. That's just above the level our analysis flags as critical — which is exactly why the first transition deserves the most attention.\n\nAs you analyze these movements, you start noticing real business problems. If customers leave en masse after buying a pricier product, the reason might be poor packaging or a lack of post-purchase support. You form a hypothesis, change the customer experience, and check live whether the return rate improved.\n\n# STEP 1: work with the customer you already have [Step 1: existing customers]\n\nOnce you know which customers to focus on, you translate that into automated actions in email and ads:\n\n- **A new customer who hasn't come back yet** — usually the largest group in the base, and therefore the biggest lever. The question isn't whether to reach out, but when and with what. From the data, you know how many days it typically takes customers in your store to place a second order — you set the sequence to land before that moment, not disconnected from it.\n- **Returning** — halfway to loyalty, and the best moment to check what separates those who kept going from those who stopped. The category of the second and third purchase usually says a lot.\n- **Loyal** — your most valuable group, and at the same time the easiest one to burn budget on, paying for sales that would have happened anyway. Excluding loyal customers from broad reach campaigns is a test worth running, not a dogma. Ad platforms learn from conversions, so the effect varies by account. A less controversial use of the same list: material for lookalike audiences.\n- **At risk of churning** — you react before they show up in a report as lost. What matters isn't just that a customer has been quiet for a few months, but how much they were worth.\n\nIt's worth pausing on the loyal-customer point, because it's counterintuitive. Among the channels that look most profitable in reports, part of the revenue comes from customers who would have bought anyway, without ads. Separating these two streams doesn't save anything by itself, but it shows you where it's even worth looking, and turns a discussion about cutting budget into a conversation about numbers.\n\nImportant: audience lists have to recalculate automatically. A static file uploaded to the ad manager stops telling the truth after two weeks — some people from the \"at risk\" list have already bought, and new ones have taken their place. It's also worth remembering platform realities: a segment under roughly 100 people usually won't form a working audience, and a lookalike audience needs a thousand or more.\n\n![From a chat question to an audience list that refreshes every day](https://a.storyblok.com/f/296300/c41e90b456/customer-perspective-03-czat-do-listy-odbiorcow.png)\n*From a chat question to an audience list that refreshes every day*\n\nThe division of labor here is clear: the conversation gives you the conclusion and the number, and the export module keeps the list current in the ad platforms. You configure the segment once, then it refreshes itself.\n\n# STEP 2: acquire better customers using data from your base [Step 2: acquisition]\n\nOnce you combine customer value data with cost and traffic-source data, you stop burning budget on one-time deal hunters. You acquire people who will naturally move onto the repeat-purchase path after their first transaction.\n\n**Evaluation horizon: count the whole cycle, not the first purchase**\n\nTake every customer you acquired in a given month and check how much they've spent with you since then. Part of the revenue came from the first order, part from later ones — and that second part grows with every additional month.\n\n![Revenue from a monthly acquisition cohort, split into first order and subsequent orders](https://a.storyblok.com/f/296300/8d6fdc78ba/customer-perspective-04-przychod-kohorta-miesieczna.png)\n*Revenue from a monthly acquisition cohort, split into first order and subsequent orders*\n\nIn cohorts acquired earlier, which had time to mature, about 35% of revenue shows up after the first order. The June and July cohorts show a lower share only because they're younger. The conclusion is simple: a campaign graded solely on the first purchase hides a third of its own result.\n\n**Assortment: products that attract the right people**\n\nA bestseller with a nice first-purchase ROAS is rarely the same product customers come back for. Looking at the base, you start distinguishing four completely different roles in the catalog:\n\n- **volume products** — attract lots of customers who don't come back afterward,\n- **gateway products** — attract fewer customers, but ones who stay with the brand longer,\n- **franchise products** — near the top of both first and repeat orders; they acquire and retain,\n- **deep-loyalty products** — only bought after many orders, the hallmark of your best customers.\n\nAcquisition budgets are worth pumping into the second and third categories. The fourth is material for a loyalty program, not a reach campaign.\n\n![Share of first orders vs. share of acquired loyal customers, by product](https://a.storyblok.com/f/296300/552c2e0625/customer-perspective-05-produkty-udzial-lojalni.png)\n*Share of first orders vs. share of acquired loyal customers, by product*\n\nWhen the blue bar is taller than the gray one, the product attracts customers who stick around. Product A has the largest volume and the weakest profile; Product E is the opposite. Keep scale in mind, though — a product responsible for 5% of first orders might simply be too small to build a campaign on, even with the best loyalty profile.\n\n**Channels: it's not one question, it's two**\n\nThis is where the most common mistake happens. \"Which channel is effective?\" is actually two different questions, and the answer to each can be completely different:\n\n- **Which channel acquires the best customers?** What matters is acquisition cost and what share of acquired customers actually stayed loyal. A low-volume, high-quality channel tends to be systematically underfunded.\n- **Which channel generates current revenue?** Here, a big part of the result is purchases from customers this channel never actually acquired — it just picked up their repeat order.\n\nMixing up these two questions leads to scaling a channel that's only harvesting what's already there, and cutting the one that actually brings people in. On top of that comes the attribution model question: a channel that looks weak under last-click often initiates purchase paths that other channels close out.\n\n![Share of acquired customers who became loyal, alongside customer acquisition cost](https://a.storyblok.com/f/296300/ef18cc37e9/customer-perspective-06-kanaly-koszt-lojalnosc.png)\n*Share of acquired customers who became loyal, alongside customer acquisition cost*\n\nThe cheapest channel is Paid social: $24 per new customer. The most expensive is Affiliate: $155 — over six times as much. But cost alone isn't enough to judge by. In Paid search, one in four acquired customers becomes loyal; in Affiliate, fewer than one in ten. So Affiliate is simultaneously the most expensive and the weakest on quality — the easiest candidate to cut from the acquisition budget.\n\nA gap above 3x is the point where it's worth shifting budget. Free channels were left out — at zero cost, there's nowhere for them to land on this axis.\n\n**Discounts: check who you're actually buying**\n\nCohorts of customers acquired with a discount code can be compared to cohorts acquired without one — not by their first order, but by how much they spent in the following months. It's the simplest way to check whether a promotion brings in customers or just speeds up sales you would have made anyway.\n\n![Cumulative revenue per customer over time — customers acquired with a discount code vs. without one](https://a.storyblok.com/f/296300/8cbce6a9cb/customer-perspective-07-rabat-kohorty.png)\n*Cumulative revenue per customer over time — customers acquired with a discount code vs. without one*\n\n# What this is built from [What it's built from]\n\nEverything above is a way of working, but someone has to keep it running. That's what WitCloud does: the platform we deploy on your data. Orders, customers, and ad costs flow into a single foundation, from which segments, flows between them, cohorts, and audience lists are all calculated. You don't have to build or wire any of it together yourself.\n\nThree things run on this same foundation:\n\n- **Reports and analysis** answer the question of what's happening and why. Live dashboards plus ready-made analyses for specific business questions: base structure, cohort quality, products, channels.\n- **List export** answers the question of how to put it into action. Segments go out as live audience lists to Google Ads, Meta Ads, TikTok Ads, and email marketing systems.\n- **WitCloud MCP** is the conversational layer on top of the data. You ask in plain language and get conclusions along with recommendations, without ordering a report from an analyst.\n\n**The key consequence: you define a segment once.** The same \"at-risk customer with high LTV\" is identical in the report you look at, in the list uploaded to Meta, and in the answer you get in chat. There aren't three definitions of the same customer across three tools that stop matching each other after six months — which is the default state at most companies still running this on exports and spreadsheets.\n\n# How this differs from the report you might already have [How it differs]\n\nThree things that actually make the difference in practice:\n\n**The analysis knows what the numbers mean.** You don't get a table to interpret yourself. You get a conclusion: where value is concentrated, what share of the base is already inactive, which customer flow is a critical signal, and which one is within normal range.\n\n**MCP knows your business, not just your data.** Before it calculates anything, it loads your company's context — industry, brand, market, seasonality. That's why its recommendations sound like they come from someone who understands what you sell, not like the output of a database query.\n\n**Conclusions end in action.** List export is a full part of the system, not a file for manual upload. Segments recalculate automatically and land, in the same form, in Google Ads, Meta Ads, TikTok Ads, and email marketing systems.\n\nThe whole thing runs in your own Google Cloud — your data remains 100% your property.\n\n# This is a process, not a one-off project [A process, not a project]\n\nA customer-base analysis done once has a short shelf life. The base is alive: customers move between stages every day, and the ones you flagged as at-risk a month ago have either already bought again or are lost by now. The value doesn't come from a single report — it comes from watching these movements regularly and reacting to them regularly.\n\nLet's be clear about this: you're not buying a report subscription here. You're launching a new campaign line that serves your existing customers, alongside the one that acquires new ones. The work splits into three layers, and only the first happens without your involvement.\n\n1. Data and lists — the system does it\n\nStore orders, ad platform costs, and GA4 traffic data flow in daily and join up on their own. With every refresh, segments recalculate from scratch: a customer who just placed a second order moves from \"new\" to \"returning\" without anyone lifting a finger, and one who crossed your inactivity threshold falls into \"at risk\" on their own.\n\nThe same applies to audience lists. A segment connected once to Google Ads, Meta Ads, TikTok, or an email system syncs daily — whoever bought drops off the at-risk list before the next send, and whoever stopped buying takes their place. There are no CSV exports, no manual file uploads, and no watching for when a list has gone stale.\n\nYou set it up once: inactivity thresholds, the value threshold for your best customers, and mapping your store to its data sources. After that, you don't have to maintain or watch over it.\n\n2. Campaigns — the marketing team does it\n\nA segment doesn't sell anything by itself. Someone has to build a campaign on top of it — on both sides: paid ads and email.\n\n- **In Google Ads, Meta Ads, and TikTok Ads:** remarketing campaigns to at-risk and lost customers, with a higher bid for those with the highest LTV; excluding loyal customers from reach campaigns so you don't pay for sales that would happen anyway; lookalike audiences built on your best customers; shifting budget toward products that attract repeat customers rather than just the bestseller. You can also add your most-loyal-customer segment as a signal in, for example, Google PMax campaigns, so your most critical campaigns get fed data about your best customers.\n- **In email and CRM:** activation toward a second purchase for new customers who haven't come back, messaging for at-risk customers, and separate communication for loyal and win-back customers.\n\nOn top of that, creative — a different message reaches someone who bought once and vanished than the one meant to keep a customer around for their fifth order. This is real work, and it's heaviest at the start: the first few weeks go into setting up campaigns and lists in the ad platforms and preparing creative and messaging by segment. After that come adjustments and tests, not building from scratch.\n\nIt's worth planning this like the launch of a new campaign type, because that's exactly what it is. You don't need a new department or a full-time analyst, but you do need clearly assigned ownership: these campaigns have to be someone's actual scope, not a side task done in passing — because otherwise, after two months, all that's left are lists with no messaging behind them. Who that is depends on how your marketing is set up: your own team, or the agency that already runs your campaigns.\n\nWe don't take on the execution itself: your team or agency handles the messaging and creative. Our part is everything before and after that: which segments are worth reaching, in what order, at which point in the purchase cycle, with what intent — and afterward, whether the result came out the way you expected.\n\n3. Decisions — they're yours\n\nWhich products to promote upfront, whether a discount attracts customers or just speeds up sales that would have happened anyway, what offer to give at-risk customers, how to split budget across channels. These are business decisions, not calculations. The system is meant to prepare them for you, not make them for you.\n\nMCP takes you as far as it possibly can here: it gives you the numbers, points out what follows from them, and frames recommendations in the context of your industry and brand. The last step — whether and how to act on it — stays on your side. If you want someone to talk it through with, we step in as advisors: we help build assortment and discount strategy on these numbers, set priorities, and decide where to shift budget.\n\n**Rhythm: a fixed point on the calendar**\n\nSo this doesn't just fizzle out, you need one fixed point on the calendar: a short check-in where three people sit down together — someone from paid campaigns, someone from email marketing or CRM, and someone who decides on assortment and promotions. How often depends on scale: at lower volume, once a month is usually enough; at higher volume, every two weeks makes more sense. What matters more than frequency is that the slot is fixed. You go through five questions:\n\n1. How has the health of the base changed since last time?\n2. Which flows between segments look concerning?\n3. Which channel brought in customers who stick around, and which one just brought volume?\n4. Which of the actions launched since last time worked?\n5. What's the one thing we're changing before the next check-in?\n\nChannels belong in this same rhythm, because their evaluation changes over time. Acquisition cost rises seasonally, the share of acquired customers who go loyal shifts along with creative and targeting, and a channel that looks weak under last-click can be bringing in the customers with the highest return rate. Looking at the base and the channels at the same table, you shift budget during the quarter, not after it's closed.\n\nNo materials need preparing, because the reports are already there, and you pull the answers from MCP during the meeting itself, just by asking. This check-in is where you measure the previous period's results and pick one change for the next one. Without it, campaigns launch fine, but after a quarter no one will know whether they're working.\n\n**In this process, we're your advisor, not your executor.** We work on the three things that matter most for the result: setting up segmentation around your actual purchase cycle, analyzing what the numbers mean and which hypotheses are worth testing, and running the rhythm in which you measure results and pick the next step. The campaigns stay yours, and we're responsible for making sure they know who they're going to and why.\n\nWhat's usually missing isn't data or hands to send things out — it's someone who regularly makes sure something actually comes out of those numbers.\n\n# Where to start [Where to start]\n\nFor the first full analysis, you need three things you most likely already have: order history from your store, media costs from the ad platforms, and traffic data from GA4. The rest is configuring thresholds around your purchase cycle.\n\nOn the team side: clearly assigned ownership of these campaigns and one regular check-in. The first sequences and creative are a few weeks of work spread out normally, not a separate project with its own budget and team.\n\n# Summary [Summary]\n\nWorking with your customer base isn't about giving up ad spend. It's about understanding how to help existing customers buy more — and how to use that knowledge to acquire new buyers with the highest potential.\n\nIt's not a one-and-done action either. It's a rhythm: the base changes, lists refresh, and you regularly make a handful of decisions based on what actually happened, not on what seems likely.\n\n::content-cta\n---\neyebrow: Free trial\nheading: See your customers as self-updating segments — during your free trial.\ndescription: \"Let's talk: we'll show you what your segments look like on your own data, test MCP, and figure out the best place to start.\"\nbuttonText: Book a call\nbuttonHref: /contact\n---\n::\n","4","Understand your customers deeply — from acquisition to lifetime value.",{"id":361,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":362,"copyright":19,"fieldtype":21,"meta_data":363,"is_external_url":32},191285268971114,"https://a.storyblok.com/f/296300/900x600/772cb9cd8d/16-customer-perspective-dark.png",{},[365,368,371,373,375],{"_uid":366,"name":237,"content":367,"component":239},"c3d20001-0000-4000-8000-000000000001","Turn your customer base into a growth engine — see how retention and acquisition data should drive your segments, campaigns, and ad spend.",{"_uid":369,"name":283,"content":370,"component":239},"c3d20001-0000-4000-8000-000000000002","Customer Perspective — WitCloud",{"_uid":372,"name":287,"content":367,"component":239},"c3d20001-0000-4000-8000-000000000003",{"_uid":374,"name":291,"content":362,"component":239},"c3d20001-0000-4000-8000-000000000004",{"_uid":376,"name":295,"content":296,"component":239},"c3d20001-0000-4000-8000-000000000005","Customer Perspective - WitCloud Customer Analysis",[],"2026-08-17 00:00",[],"customer-perspective","content/framework/customer-perspective",-70,[],"3caf753e-943c-43f7-b9d9-13dc2d2cba1d",[],{"name":388,"created_at":389,"published_at":390,"updated_at":391,"id":392,"uuid":393,"content":394,"slug":420,"full_slug":421,"sort_by_date":169,"position":422,"tag_list":423,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":424,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":425,"default_full_slug":169,"translated_slugs":169},"Marketing and Business Control","2026-06-25T07:32:46.158Z","2026-08-30T18:38:55.359Z","2026-08-30T18:38:55.382Z",191214248626088,"0649e4e2-cd54-4919-b384-9c11f5987990",{"_uid":395,"title":388,"content":396,"eyebrow":109,"showTOC":39,"category":19,"priority":397,"readTime":270,"subtitle":398,"component":272,"eventDate":19,"heroImage":399,"meta_tags":403,"meta_title":416,"eventFormat":19,"heroButtons":417,"updatedDate":418,"bottomBlocks":419},"36f48a38-1915-4aa0-aebc-a1f92cd6809d","You already have a single source of truth — data from your store, ads, analytics and marketplaces gathered in one place and brought down to a common language. That's the foundation. But an organized dataset on its own doesn't yet tell you whether the business is heading the right way. For that you need two more things: goals arranged into a logical structure — a KPI tree — and a mechanism that watches those goals for you and lets you know when something drifts from normal. And once it does, instead of guessing, you drill down the same tree all the way to the cause. From KPI, through alert, to diagnosis.\n\n# A list of metrics is not the same thing as a KPI tree [List vs. tree]\n\nMost companies have plenty of metrics. A dashboard where revenue, ROAS, session count, ad spend, conversion rate and ten other numbers all sit side by side. The problem is that this is a list, not a structure. When revenue drops, a list like that doesn't tell you where to look — it shows you twenty numbers at once and leaves you with the question \"okay, but why?\".\n\nA KPI tree flips that logic. Instead of a flat list, you build a hierarchy: one top-level goal at the top, and beneath it the metrics that make it up — and so on, deeper and deeper, down to the levers you can actually pull. Every level answers the question \"what does the level above it break down into?\".\n\n![KPI tree: the top-level goal at the top, the metrics that make it up below, and at the very bottom the levers you actually control. Movement at the top can always be explained by movement on one of the branches below.](https://a.storyblok.com/f/296300/e333674391/marketing-control-01-drzewo-kpi.png)\n*KPI tree: the top-level goal at the top, the metrics that make it up below, and at the very bottom the levers you actually control. Movement at the top can always be explained by movement on one of the branches below.*\n\nIn e-commerce, the simplest and at the same time most important tree starts from revenue. Revenue from traffic isn't one number — it's the product of three: session count, conversion rate, and average order value (AOV). If revenue dropped, one of those three branches dropped — and you already know where to look next.\n\nAnd each of those branches breaks down further still. Conversion rate isn't a constant either — it's the outcome of the whole funnel: of all sessions, some add a product to the cart (add-to-cart rate), of those some move on to checkout (checkout rate), and of those some complete the purchase (purchase rate). When conversion drops, you don't ask \"why did conversion drop\" — you ask \"at which step of the funnel am I losing traffic\". Because a drop at the cart stage is a different problem (price, shipping cost) than a drop at the payment stage (the gateway, the last step of checkout).\n\n![The funnel is a branch of the KPI tree broken down step by step. A conversion drop always sits at a specific stage — and every stage has its own, specific cause.](https://a.storyblok.com/f/296300/c5d57896d8/marketing-control-02-lejek-konwersji.png)\n*The funnel is a branch of the KPI tree broken down step by step. A conversion drop always sits at a specific stage — and every stage has its own, specific cause.*\n\nThe same logic works on the ads side. ROAS is revenue divided by cost — so when ROAS drops, either cost went up or ad revenue went down. If cost went up, it's because the price per click (CPC) or per impression (CPM) rose, or you simply bought more traffic. Each of those \"eithers\" is a different branch and a different action.\n\n> A KPI tree isn't a prettier dashboard. It's a map that tells you upfront which way to go down when something breaks — instead of leaving you with a list of numbers and a gut feeling.\n\nIn WitCloud, that tree doesn't stay a diagram on paper — you build it as a concrete definition. You pick the metrics that matter to you from the All In One data, and assign three things to each one. First, related metrics — the branches below it that explain its movement: for ROAS you attach cost, revenue, CPC and CPM; for conversion rate, the next steps of the funnel. Second, comparison windows that make sense for that metric: some things you review week over week, others month over month, and for strongly seasonal metrics only year over year shows the real picture. Third, whether you want notifications when that metric drifts from normal.\n\n![Every node of the tree is a definition: the metric itself, the related metrics attached to it, the right comparison windows, and a monitoring flag. Once built, the tree is at the same time a diagnosis map, a set of comparisons, and a list of what's worth watching.](https://a.storyblok.com/f/296300/58f9407c5a/marketing-control-03-definicja-metryki.png)\n*Every node of the tree is a definition: the metric itself, the related metrics attached to it, the right comparison windows, and a monitoring flag. Once built, the tree is at the same time a diagnosis map, a set of comparisons, and a list of what's worth watching.*\n\nThat way, one definition powers everything that comes after: it's what you drill down through during diagnosis, it's whose comparison windows monitoring uses, and it's what AI queries — through our connector. You don't maintain three separate configurations or paste anything into the model: you have one tree in WitCloud, and all three functions run on it.\n\nAnd this is where the foundation from the earlier articles comes back. A tree like this only makes sense if all its branches are counted from one, consistent source. If you take revenue from one system, cost from another, and sessions from a third — each counting its own way and speaking its own language — the tree falls apart before you even finish building it. All In One gives it common ground: one data model, where spend and cost are already a single metric, and you know exactly which question CRM revenue answers and which one GA4 revenue answers.\n\n# You can't watch everything at once [Monitoring]\n\nYou have the KPI tree. But a living tree for a real store isn't five metrics — it's dozens of branches across several markets, several channels, hundreds of campaigns. Nobody reviews that by hand every morning. And even if someone does, they'll only catch the big, obvious changes — the subtle ones that are just starting to build get lost in the noise.\n\nThat's why the second element is proactive monitoring. Instead of you logging into reports every day to check whether anything changed, the system does it for you — and you only find out when there's actually something to know about.\n\nIt works simply. You define which metrics are critical to you and what movement you consider concerning — for example \"let me know when ROAS from the ad systems drops by more than 20% week over week\", \"when ad cost rises by more than 25%\", \"when order count drops by more than 20%\", or \"when conversion rate drops by more than 15%\". Monitoring uses exactly what you set in the tree. Once a day, the system takes every metric flagged for tracking and compares it over the window you defined for it — day over day, week over week, or year over year for seasonal ones — checking whether the movement crossed the threshold. If a metric crosses it, you get an email notification. If nothing crossed it — silence, and that's good news.\n\nThe whole trick is in setting the thresholds right. Marketing data naturally fluctuates day to day — if you set a threshold too sensitively, you'll get an alert on every small wobble and stop reading them within a week. The threshold needs to sit above the normal noise, so a notification means a real change, not an ordinary fluctuation. That's why thresholds are picked for the specific business: what's sensible for a store doing 50 orders a day is different from one doing 5,000 — because at lower volume, every number swings harder. A well-set-up monitoring system stays quiet most days and speaks up only when it's genuinely worth a look.\n\n![You set the thresholds on the critical metrics. The system watches them daily and speaks up only when a threshold gets crossed — on the right market, in the right channel.](https://a.storyblok.com/f/296300/c2f2169e82/marketing-control-04-progi-monitoringu.png)\n*You set the thresholds on the critical metrics. The system watches them daily and speaks up only when a threshold gets crossed — on the right market, in the right channel.*\n\nThe key difference is in the direction of attention. Without monitoring, you have to remember to check the data yourself — and most often you do it too rarely, or only once someone notices the problem after the fact. With monitoring, the data speaks up to you. The anomaly reports itself on the day it appears, not at month end, when it's already too late to react to it.\n\nAnd again — this only works because underneath it all there's a single source of truth. Monitoring calculates metrics from exactly the same organized tables you read your reports from. There's never a situation where the alert says one thing and the report shows another, because both take their numbers from the same place and the same definition.\n\n::content-cta\n---\neyebrow: KPI monitoring\nheading: Want to know about a ROAS drop the day it happens — not at month's end?\ndescription: \"We'll show you how to set up proactive monitoring on your critical metrics.\"\nbuttonText: Book a call\nbuttonHref: /contact\n---\n::\n\n# The alert fired — don't guess, diagnose [Alert & diagnosis]\n\nYou get a notification: ROAS in the PL market dropped 22%. This is the moment where most teams start guessing. \"Probably seasonal\", \"maybe something with the brand campaign\", \"competitors might have raised their bids\". Guessing has a cost — you either cut budget where you shouldn't, or you wait to react until the problem grows.\n\nInstead of guessing, you drill down the KPI tree. This is exactly the structure you built at the start — now it works as your diagnosis path. There's one rule: from general to specific.\n\nFirst you ask where. Since the alert is about ROAS, you break it down by market — which market is behind the drop? Say it's PL, while DE and CZ are stable. So you drill into PL and break it down by channel — which channel is dragging ROAS down? Google Ads. You drill into Google Ads and break it down by campaign — and you see one that stands out, where cost spiked and revenue didn't keep up.\n\n![Drilldown is going down the tree: market → channel → campaign. At each level you ask \"which branch is behind the change above it\" and you go only into that one.](https://a.storyblok.com/f/296300/4fb7cf462a/marketing-control-05-drilldown.png)\n*Drilldown is going down the tree: market → channel → campaign. At each level you ask \"which branch is behind the change above it\" and you go only into that one.*\n\nThen you ask why. This is where you decompose the metric itself. ROAS dropped — because cost went up, or because revenue went down? Turns out it's cost. So why did cost go up — because you bought more clicks, or because each click got more expensive? Turns out CPC rose by half at the same click volume. That's no longer \"something's going on with ROAS\". It's a concrete sentence: on campaign X in Google Ads in the PL market, CPC rose by around 50%, likely due to an auction shift, and that's what ate into ROAS. With a sentence like that, you know what to check and what to do.\n\nAnd here's where an important choice comes in: how to run that diagnosis. There are two paths — and both go down the same tree, from the same source of truth.\n\nThe first is self-service exploration in the report. WitCloud provides a ready-made template — the All In One report — where your data is already arranged around real questions: markets, channels, campaigns, funnel. You click through the levels yourself: filter by market, drill into a channel, break down a campaign, look at the levers underneath. Some teams simply like this mode — they want the data under their fingers, laid out where they expect it, and would rather browse a report than ask anything. That's completely fine, and we're not taking it away.\n\nThe second is exploring with AI. Instead of clicking, you ask directly: \"why did ROAS in PL drop?\". And here's the crux: the KPI tree you set up once in WitCloud is immediately available to AI. The question goes through our MCP connector straight to that same tree, and the answer comes back in a few seconds. You don't paste anything, don't rebuild the configuration a second time, don't export data to the model — the definition sits in WitCloud, and AI simply queries it. The model then walks the same path you would in the report — it breaks the metric down by market, drills into the channel, then the campaign, checks the levers underneath: CPC, CPM, conversion count, order value — only it goes deeper, and at the end it gives the most likely cause along with a concrete recommendation. It doesn't hallucinate over raw, contradictory tables — it explores the same consistent dataset you read your reports from.\n\n![You configure the KPI tree once in WitCloud. AI reaches the same definition through the MCP connector and comes back with a ready answer — no data export, no re-pasting the configuration.](https://a.storyblok.com/f/296300/1db8dffd11/marketing-control-06-ai-mcp.png)\n*You configure the KPI tree once in WitCloud. AI reaches the same definition through the MCP connector and comes back with a ready answer — no data export, no re-pasting the configuration.*\n\nWe recommend AI the most — because it drills down the tree faster and deeper than you would by hand, and it doesn't get tired at the tenth branch in the middle of the day. But the report stays, deliberately: not everyone wants to talk to a model, and a good, well-organized report is often the fastest route to an answer when you know exactly what you're looking for. What matters most is that both stand on the same source of truth — so whichever path you take, you arrive at the same number and the same cause.\n\nAnd one more thing AI gives you beyond a manual drilldown: it doesn't have to limit itself to a single alert. Since you've already defined the whole tree in WitCloud — with related metrics and the right comparison window on every branch — the model can walk through all of it through that same connector. It takes every metric, checks it in its own window, drills into wherever something stands out, and hands back one coherent health check of your entire marketing at once — from the top of the tree down to the levers you'd otherwise drill into by hand anyway. That's no longer a reaction to a single signal — it's a full diagnosis on demand: \"go through the whole tree and tell me what needs my attention\".\n\n> Diagnosis isn't another tool — it's drilling down the tree you already have. The alert tells you what and where. Drilldown tells you why. AI does the same thing, just deeper and faster.\n\nIt's worth adding one rule that guards against a wrong conclusion: diagnosis doesn't mix sources. If the alert is about a metric from the ad systems, the whole analysis drills down through ad data. If it's about the funnel from GA4, you drill down through the GA4 funnel. You don't combine revenue from one system with cost from another halfway through a drilldown, because then you're right back at the mismatched-numbers problem from the data quality article. Every diagnosis path stays within a single source of truth.\n\n# From goal to cause — without guessing [Summary]\n\nLet's put it all together. A single source of truth gives you consistent data. A KPI tree gives it structure — and you define it once, assigning each metric its branches, the right comparison windows, and whether you want to monitor it. Three things stand on that one definition: monitoring, which watches it for you and speaks up on the day something drifts from normal; self-service exploration in the All In One report; and AI, which will drill down from a single alert or walk the whole tree at once and tell you what needs your attention.\n\n![The full loop: single source of truth → KPI tree → monitoring → alert → diagnosis → action. Every element rests on the same, organized dataset.](https://a.storyblok.com/f/296300/9faceadf93/marketing-control-07-pelny-obieg.png)\n*The full loop: single source of truth → KPI tree → monitoring → alert → diagnosis → action. Every element rests on the same, organized dataset.*\n\nThe effect is that the path from \"something's wrong\" to \"I know what and why\" shrinks from days to minutes. You don't have to stare at dashboards every day or guess where to look when the result drifts from plan. Your goals are laid out, the system watches them, and when you need to dig into the data, you have a ready path and a single source to follow.\n\nThe best moment to put this in place is once the foundation — a single source of truth — is already standing. And if it isn't yet, that's the first step we start from. Instead of chasing results after the fact — keep your marketing under control, from KPI to diagnosis.\n\n::content-cta\n---\neyebrow: Free trial\nheading: See your KPIs organized into a tree — with monitoring and diagnosis on your own data.\ndescription: \"Let's talk: we'll show you monitoring and drilldown on your own single source of truth.\"\nbuttonText: Book a call\nbuttonHref: /contact\n---\n::\n","3","Full visibility into your marketing spend, ROI, and business performance.",{"id":400,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":401,"copyright":19,"fieldtype":21,"meta_data":402,"is_external_url":32},191285268971113,"https://a.storyblok.com/f/296300/900x600/96c4a0c41f/15-marketing-control-dark.png",{},[404,407,410,412,414],{"_uid":405,"name":237,"content":406,"component":239},"a4c30001-0000-4000-8000-000000000001","See how a KPI tree, proactive monitoring, and AI-powered drilldown turn a marketing alert into a clear diagnosis — without guessing.",{"_uid":408,"name":283,"content":409,"component":239},"a4c30001-0000-4000-8000-000000000002","Marketing Under Control — WitCloud",{"_uid":411,"name":287,"content":406,"component":239},"a4c30001-0000-4000-8000-000000000003",{"_uid":413,"name":291,"content":401,"component":239},"a4c30001-0000-4000-8000-000000000004",{"_uid":415,"name":295,"content":296,"component":239},"a4c30001-0000-4000-8000-000000000005","Marketing Under Control - WitCloud KPI Monitoring",[],"2026-08-10 00:00",[],"marketing-and-business-control","content/framework/marketing-and-business-control",-50,[],"9e63050e-5c01-4bc1-90c4-e9c9e224a4da",[],{"name":427,"created_at":428,"published_at":429,"updated_at":430,"id":431,"uuid":432,"content":433,"slug":458,"full_slug":459,"sort_by_date":169,"position":460,"tag_list":461,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":462,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":463,"default_full_slug":169,"translated_slugs":169},"Data Quality","2026-06-25T07:32:42.796Z","2026-08-24T10:42:19.738Z","2026-08-24T10:42:19.754Z",191214234867622,"6b02343d-c062-4616-97d0-798ee62bac8d",{"_uid":434,"title":427,"content":435,"eyebrow":109,"showTOC":39,"category":19,"priority":436,"readTime":437,"subtitle":438,"component":272,"heroImage":439,"meta_tags":443,"meta_title":449,"heroButtons":455,"updatedDate":456,"bottomBlocks":457},"9d78dfb6-4b8a-4f74-8dc2-8f99b60d05b4","## Everyone wants to automate. First, you need something to automate. [Start with data]\n\nAutomating everything is the current fashion — and yes, it can be done. But automation is only ever as good as the data it's fed. And in e-commerce, the most dangerous errors never show up red. The system shows a green light, data keeps flowing — yet it can still be incomplete or untrue, and you won't know it until someone checks: by hand, or through a properly built automated control.\n\nTwo examples, to make it concrete. First — at the point of collection. A customer pays through an external gateway: PayU, Przelewy24, PayPal. After paying they don't return to the confirmation page, or they return via a URL where the `purchase` tag doesn't fire. The transaction is completed and paid — but it doesn't exist in analytics. Nothing turns red, because as far as the system is concerned, nothing happened. Real revenue and campaign ROAS are simply understated, and nobody sees it.\n\n![](https://a.storyblok.com/f/296300/2448x960/d501dcd871/g1_purchase_v2.png)\n\nSecond — downstream, once data is already flowing into reports. An integration pulling data from an ad platform runs flawlessly for a year. Then one day the platform retires an old API version — and the connection starts returning less data. No error, no warning. The report keeps generating, because the other sources are working fine — it's just that one stopped returning the full picture. And once part of the cost from one channel is missing in the warehouse, costs and revenue stop reconciling, and every metric built on them — ROAS, margin, acquisition cost — is simply wrong. You only find out once someone notices that revenue from that channel \"somehow dropped.\" The green light was on the whole time — because the report was running. The numbers in it just weren't true.\n\n![](https://a.storyblok.com/f/296300/2448x960/1a639c4655/g2_integration_v2.png)\n\nTwo different errors in two different places — but one thing connects them: the interface showed that everything was fine.\n\nWe use AI every day in our data work. That's exactly why we know its limitations first-hand. If you simply tell AI to look at the data and judge whether it's fine, it will see a green light and return a status of \"all good.\" Except \"all good\" isn't always true — and the decision then gets made on a signal that isn't actually there.\n\nThe reason is structural. E-commerce analytics involves dozens of non-standard connections that have never been properly documented anywhere: custom order statuses, unusual integrations, exceptions in payment logic, local market quirks. AI by nature fills documentation gaps with its most probable guess — and in analytics, \"probable\" and \"true\" are two different things. That's why the risk of hallucination here is enormous.\n\nThat doesn't mean automation doesn't work — only that not every kind does. Good automation here isn't AI \"looking and approving.\" It's specific, purpose-built control rules that check exactly the places where data tends to break — plus manual verification wherever context matters. Not because we don't trust automation, but because we know where it breaks down.\n\nThat's why it's worth looking at data quality through two lenses: how data **enters** individual systems, and how it **flows out** into a single warehouse. These are two different sources of errors and two different ways of working. But one thing connects them from the start: the easiest way to verify anything is when data from every system sits side by side in one place.\n\n![](https://a.storyblok.com/f/296300/2448x894/9431c24220/20-audyt-dwie-warstwy-dark.png)\n\n> **Layer one** determines whether the data is even true to begin with. **Layer two** — whether it stays consistent as everything around it changes.\n\n---\n\n## Layer one — data entering the systems [Layer one]\n\nEverything that happens before data lands in GA4, Meta Ads, your ad platform, or CRM: the website, the app, the data layer, tags, events, Consent Mode, server-side. The most dangerous errors at this layer share one trait — **everything looks fine from the interface**.\n\n### Consent Mode that only looks correct\n\nA user declines marketing consent — and through a configuration error, analytics consent gets declined too. The rejection message looks correct. GA4 reports everything working as expected under consent mode. And you simply have less data than you should — systematically, across every channel at once, with no signal that anything is wrong.\n\n![](https://a.storyblok.com/f/296300/2448x834/c0bb21c93d/21-audyt-consent-mode-dark.png)\n\n> In the EU this is most often the single largest, **invisible** gap in your data. That's why the audit checks not what the system declares, but the actual requests and consent parameters (**GCS**, **GCD**, **NPA**) — before acceptance, after rejection, and after consent.\n\n### Missing **purchase** events\n\nBack to the payment gateway example — because it's one of the most common and costly gaps at this layer. PayU, Przelewy24, PayPal, InPost Pay: the customer pays, but doesn't return to the confirmation page, or returns via a URL where the **purchase** tag doesn't fire. The transaction is completed and paid, but it doesn't exist in analytics.\n\n![](https://a.storyblok.com/f/296300/2448x654/68e7978441/22-audyt-purchase-gap-dark.png)\n\n> The more payments flow through external gateways and wallets, the larger the gap — and the more **understated the real revenue and ROAS** of every campaign that generated that transaction.\n\n### Messy identifiers and currency\n\nEvery system collects data its own way: **item_id** in the data layer doesn't match the ID in the product feed, transactions arrive without a passed value or in the wrong currency when selling across multiple markets. The event technically fired, so nothing turns red — but the data doesn't join across systems, and ROAS calculated from those values is simply wrong.\n\n### Product feed: incomplete and missing steering signals\n\nA feed isn't just a product list — it's the data on which Google's and Meta's machine-driven campaigns make decisions on your behalf. Feeds usually have two problems at once. The first is plain errors and gaps: inconsistent **item_id**, missing attributes, outdated prices and availability. The second, more serious one, is missing data that gives campaigns direction.\n\n![](https://a.storyblok.com/f/296300/2448x894/0d98f2a0ca/23-audyt-feed-sygnaly-dark.png)\n\n> Custom labels turn the feed from a **passive list** into a **campaign steering tool** — carrying what the algorithm doesn't know on its own: margin, turnover, stock level, clearance status.\n\n### User ID that isn't being sent at all\n\nIt's not a subtlety like \"only sent on login.\" In practice, **user_id** often isn't reaching GA4 at all — even though the client is certain it's implemented. Without it, you can't connect one user's sessions across devices or between web and app. Each person fragments into several \"new\" users, and all retention, cross-device, and purchase-path analysis is built on fiction.\n\nThe outcome of errors at this layer is always the same: the data is wrong from the source, and the interface doesn't show it. Everything downstream — reports, campaign optimisation, AI recommendations — inherits that error with no way to detect it.\n\nThat's why a tracking audit isn't a dashboard read — we combine automated tests with manual verification wherever context matters. We walk the full path from ad click to paid transaction and verify: data layer events (**purchase**, **add_to_cart**, **begin_checkout**), actual Consent Mode and CMP behaviour, value and identifier integrity, User ID implementation, feed completeness and steering signals, and consistency between web and app. The result is a document with the status of every element and an action plan for IT. Automation and AI do the first, broad pass over the data; non-standard connections, exceptions, and results that look \"too clean\" get confirmed by hand — so no silent gap ever slips through as \"OK.\"\n\n::content-cta\n---\neyebrow: Data Quality Audit\nheading: Find out if your data is telling the truth.\ndescription: \"We'll walk the whole path — from click to paid transaction — and hand you a report with the status of every element and a fix plan for IT.\"\nbuttonText: Get a data quality audit\nbuttonHref: /contact\n---\n::\n\n---\n\n## Layer two — keeping data consistent over time [Layer two]\n\nThe nature of the problem changes here. Layer one can be fixed once. Layer two can never be fixed for good — because marketing data isn't a state, it's a process that keeps changing without your consent.\n\nAnd here comes the temptation to just build your own warehouse and be done with it. The problem is that the hard part isn't building it — it's maintaining it.\n\n### Fresh data is always incomplete\n\nConversions are attributed to the click date, but they trickle in over the following days and weeks, with some arriving as modelled. That's why yesterday's and last week's numbers always look worse than they really are — and will \"improve\" on their own over the coming days. This isn't an error, it's data maturing. But if someone reads a fresh period as final, they cut budget exactly where the campaign is actually working.\n\n![](https://a.storyblok.com/f/296300/2448x924/34faede8c1/24-audyt-dojrzewanie-dark.png)\n\n> You read a fresh week as the final result — and cut budget where the campaign **is actually working**. The rest of the conversions are still on their way.\n\n### Integrations break quietly\n\nThis was the second example from the intro — and it's back here for a reason, because it's one of the sneakiest errors at this layer. Platform APIs are versioned and deprecated. An integration that worked for a year can quietly stop returning some of the data without any error — it simply starts returning less. Tracking itself can be flawless: events collected without a hitch, while the warehouse still ends up with a three-week gap, because the transfer from one source broke. And it only takes one such source to distort every aggregated metric calculated from that data.\n\n### Keys and structures change, and reports fail silently\n\nThis is the daily, most tedious part of working with data. A store changes its **item_id** format after a migration — and suddenly CRM data doesn't join with the feed or with GA4, because they join on an identifier that no longer exists. Someone renames a campaign and breaks the channel-mapping rule, so costs land in \"other.\" A marketplace platform renames columns in its export. None of these changes throws an error — the report still generates, the numbers still show up, they're just inconsistent or incomplete.\n\n### The hand-stitched warehouse holds together because of one person\n\nThe most common alternative looks like this: someone wrote scripts pulling data from Meta, Google Ads, and the CRM, added a handful of manual fixes for edge cases, joined it all in BigQuery, and built reports on top. It works — until it doesn't.\n\n![](https://a.storyblok.com/f/296300/2448x834/f72e716b81/25-audyt-pipeline-dark.png)\n\n> The more sources and manual exceptions, the more fragile the whole thing. A data warehouse **shouldn't be one specialist's private creation** that stops working the moment they stop watching over it.\n\n### Definitions drift. History has seams.\n\nEvery system counts differently: different attribution windows, different conversion definitions, different consent handling, different time zones. That's why GA4 and the CRM will, by default, show different conversion numbers — and that's normal, it's not something you \"fix.\" The real problem starts elsewhere: when those numbers drift apart more than the definitions alone explain, or when the gap suddenly shifts over time for no reason. At that point it's no longer a natural methodology gap — it's a signal that something broke. And switching analytics platforms or relaunching a store is its own moment of risk — the data breaks off or changes methodology, so year-over-year comparison becomes worthless unless someone deliberately unifies the historical data.\n\nThis is the difference between a hand-stitched warehouse and a maintained platform. It isn't a project that ends — it's operational work: monitoring source completeness, detecting anomalies, updating connectors after API changes and, above all, continuously normalising data into one coherent model. **WitCloud does this automatically, regardless of who happens to be on the team**: it maps data from every system onto a shared structure and makes sure a change to the item_id format or a campaign rename doesn't blow up reporting. When a transfer breaks or data drifts from the norm, an alert fires — before the gap distorts a decision. The data stays in your Google Cloud project and belongs to you, but its maintenance and consistency no longer depend on one person's memory.\n\n---\n\n## The warehouse doesn't wait for perfect data — it helps fix it [The warehouse]\n\nIt's easy to draw the wrong conclusion from all this: \"I first need six months to get my data in order before I can roll out a warehouse.\" That's not true — it reverses the order.\n\nAs long as data sits in five separate systems, nobody sees how it relates to itself. That GA4 and the CRM show different numbers — that's natural. But whether the gap fits what attribution and consent explain, or whether it's already too large and growing over time — you can't judge that when you're looking at each number in a different panel, on a different day. It only becomes visible once they're all standing side by side.\n\n![](https://a.storyblok.com/f/296300/2448x894/c905c40b16/26-audyt-jedna-hurtownia-dark.png)\n\n> Consolidating data into one warehouse is **the fastest way to see problems at all** — gaps in **purchase**, broken integrations, feeds without labels.\n\nFor us, this runs in parallel, not in sequence. Very often it's the data in WitCloud that gives the first signal something is wrong — numbers that suddenly stop reconciling, a channel that disappeared, revenue that doesn't match the CRM. The warehouse shows that a problem exists. The audit says where it comes from and how to fix it. Each drives the other.\n\n> You don't need perfect data to start. You need to see it in one place — because only then do you know what to fix first and what can wait.\n\nAnd above all of this, AI finally has something solid to hold onto: not raw, contradictory systems, but a single, maintained source — one that signals for itself when it stops being reliable.\n\n---\n\n## Truth first, then peace of mind [Summary]\n\nData quality plays out on two layers and calls for two different moves. The first — whether the data is even true at the source — is work you do once: an audit that catches the invisible gaps in tracking and tells you plainly what to fix. The second — whether the data stays consistent as everything around it changes — is ongoing work that can never be \"checked off.\" That's exactly why building a warehouse yourself rarely holds up: it's not the build you trip over, it's the upkeep. WitCloud does that for you — it keeps a single, maintained source in your own Google Cloud project and signals for itself when something stops adding up.\n\nThe audit fixes the data at the source. WitCloud makes sure it doesn't break again. You don't need perfect data to start — you need to see it in one place and know which numbers you can trust.\n\n::content-cta\n---\neyebrow: WitCloud\nheading: Let's talk about your data.\ndescription: \"We'll show you how WitCloud maintains data quality for you — and where's the best place to start in your case.\"\nbuttonText: Let's talk about WitCloud\nbuttonHref: /contact\n---\n::","2","10 min read","We love working with AI — but we've seen more than once where it breaks down: on data that looks correct but isn't. That's why we look at data quality from two sides: an audit that catches and helps fix errors at the source, and WitCloud, which maintains that quality over time.",{"id":440,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":441,"copyright":19,"fieldtype":21,"meta_data":442,"is_external_url":32},191752415560470,"https://a.storyblok.com/f/296300/2448x1044/910a31042b/19-audyt-trzy-systemy-dark.png",{},[444,447,450,452],{"_uid":445,"name":237,"content":446,"component":239},"mt-desc-001","Learn why reliable marketing data is the foundation of AI-driven decisions — and how to audit GA4, ad platforms, and your CRM for invisible gaps.",{"_uid":448,"name":283,"content":449,"component":239},"mt-ogt-001","Data Quality | Witbee",{"_uid":451,"name":287,"content":446,"component":239},"mt-ogd-001",{"_uid":453,"name":291,"content":454,"component":239},"mt-ogi-001","https://a.storyblok.com/f/296300/900x600/675e5dffc3/14-data-quality-dark.png",[],"2026-08-03 00:00",[],"data-quality","content/framework/data-quality",-30,[],"a558aba1-4b52-410d-a930-e01155d5ed08",[],{"name":465,"created_at":466,"published_at":467,"updated_at":468,"id":469,"uuid":470,"content":471,"slug":504,"full_slug":505,"sort_by_date":169,"position":506,"tag_list":507,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":508,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":509,"default_full_slug":169,"translated_slugs":169},"Single Source of Truth","2026-06-25T07:32:39.182Z","2026-08-30T18:37:49.162Z","2026-08-30T18:37:49.179Z",191214220044196,"0f19eb25-d201-46bd-bd36-9bc2fe2ca0e9",{"_uid":472,"title":473,"content":474,"eyebrow":475,"showTOC":39,"category":19,"priority":476,"readTime":477,"subtitle":478,"component":272,"eventDate":19,"heroImage":479,"meta_tags":483,"meta_title":489,"eventFormat":19,"heroButtons":497,"updatedDate":502,"bottomBlocks":503},"019bbd02-c3d2-4bf0-b0ee-4ad4dcd7cac0","A single source of truth","All In One is our module in the WitCloud platform. In one place it gathers all your data — from your store, ad systems, analytics and marketplaces — and organizes it into ready-to-use sets you can read answers straight off. It sounds simple, but it's exactly this order that decides whether you make decisions from your data in minutes or in weeks. Let's start with the problem All In One solves.\n\n# You have data everywhere — answers nowhere [The data problem]\n\n“What was our actual ROI last quarter?” — a seemingly simple question that very few people can answer off the top of their head. The data is right there: in GA4, Google Ads, Meta, the e-commerce platform, on the marketplace. And yet, to calculate a single number, someone has to pull it out of every system separately, stitch it together, reconcile the names and clean it up.\n\nSome companies still do it the old way — an analyst glues a report together in a spreadsheet for a week, or everyone waits until the end of the month for the “results to come in,” and only then makes decisions. Some, in 2026, do it in a more modern way: they connect AI directly to their systems — GA4, Meta, the store — via MCP, for example, and ask the model to assemble the report itself. And it works — up to a point.\n\n![](https://a.storyblok.com/f/296300/6b3bf68be1/aio_01_wyspy_systemow.png)\n\n*Every system holds its own piece of the truth — and its own naming. As long as they sit apart, a simple number takes manual stitching every single time, from scratch.*\n\nBecause the problem doesn't disappear when you plug in AI — it just moves. Raw, scattered data is just as hard for the model as it is for a human: to calculate anything, the AI queries six sources, pulls thousands of raw rows about products and transactions into context, fires off query after query — and on larger datasets it simply chokes. It answers slowly, expensively and unreliably.\n\nSo the problem lies neither in a lack of data nor a lack of tools. It lies in the fact that the data is scattered and every source speaks its own language. Gathering it in one place is only half the journey.\n\n**Gathering the data is half the journey. Organizing it so you can read answers straight off it — that's the second half, and the more important one.**\n\n---\n\n# First, everything in one place — and it's yours [One place]\n\nThe first step is mundane, but everything starts with it: All In One brings all your sources — store, ads, analytics, marketplace — together in one place and refreshes them automatically. No more manual exports, no more “yesterday's data.”\n\n![](https://a.storyblok.com/f/296300/9bdb4f254b/aio_02_jedno_miejsce.png)\n\n*The warehouse sits on your own Google Cloud project, not on our servers. The data is and stays yours — with full control and ownership.*\n\nWhere that place lives matters. The warehouse sits on your own Google Cloud project — not on our servers. The data is and stays yours: you have full control over it, full ownership, and the certainty that it isn't locked in with an external vendor that's hard to detach from later.\n\nAnd since it lives in your BigQuery, you open it with whatever you like — Looker Studio, Power BI, Tableau, Google Sheets (Connected Sheets), your own SQL or AI tools. No re-plugging, no exports, no waiting on us. This isn't a legal detail — it means you're building your own asset that stays with you regardless of who you work with, and that nobody can switch off on you.\n\n::content-cta\n---\neyebrow: Data audit\nheading: Not sure where your data actually lives today?\ndescription: \"Let's audit your sources — we'll show what can be connected, and how fast.\"\nbuttonText: Book a free audit\nbuttonHref: /contact\n---\n::\n\n---\n\n# From raw tables to ready answers [Ready answers]\n\nGathering data in one place doesn't yet mean it's ready. A raw API export isn't an answer to a question — it's the raw material you still have to compute the answer from. And the material from every system looks different.\n\nThe simplest example: Facebook calls the money spent **spend**, Google calls it **cost**. It's exactly the same thing — advertising cost — but until someone brings it down to a common word, the two systems refuse to add up. All In One does this automatically: both become a single metric — **ad_system_cost**. And there are hundreds of such mismatches: different names, different date formats, different currencies, different conversion definitions.\n\n![](https://a.storyblok.com/f/296300/92a2d1e9d6/image_3.png)\n\n*Advertising cost is advertising cost — no matter whether a system calls it **spend** or **cost**. Unification brings hundreds of such mismatches down to one consistent model.*\n\nThis is exactly what All In One's whole job is: it brings all your sources down to one common language, and then builds ready-made datasets (datamarts) from them, arranged around real business questions. Instead of dozens of raw tables you still have to join, you get ready-made views:\n\n- **ad_systems** — all costs, clicks, impressions and conversions from ads in one consistent view.\n- **orders** — hard sales from the store combined with marketing costs; here you calculate ERS, ROI, new vs. returning customers.\n- **orders_products** — sales at the level of a single product: what sells, what earns, how it changes over time.\n- **ga_sessions** — traffic and behavior from GA4 combined with ad costs, i.e. blended ROAS for each channel.\n- **ga_orders, ga_attribution_paths, ga_attribution_summary** — sales and multi-channel conversion paths for attribution analysis and budget allocation.\n\n![](https://a.storyblok.com/f/296300/cb2421366e/image_4.png)\n\n*The difference is like between a warehouse full of parts and a finished car. Both “contain” the same thing — but only one of them you can actually drive away.*\n\nAnd all of it tied together from one place, no matter how many tools you use today for ads and sales:\n\n![](https://a.storyblok.com/f/296300/e80687159a/aio_04_integracje.png)\n\nThe question “what was our actual ROI last quarter” then stops being a week-long project. It becomes something you simply read off.\n\n---\n\n# Only now does AI have something to work with [AI has data]\n\nLet's come back to AI, because this is where it all comes together. What wears down an analyst stitching data together wears down the model too — with the difference that the model won't tell you. Thrown at raw, scattered tables it does exactly what we described at the start: it multiplies queries, pulls huge, disorganized sets into context, confuses **spend** with **cost**, computes slowly, expensively and with no guarantee it's right.\n\n![](https://a.storyblok.com/f/296300/1b559fc9be/image_5.png)\n\n*On the left, AI on raw data: many queries, an overloaded context, unstable results. On the right, on ready-made sets from All In One: one question, a clean context, an accurate answer.*\n\nOnce it's organized, the setup flips. The heaviest lifting — joining, cleaning and aggregating millions of rows — All In One does earlier, in the warehouse, on Google Cloud's compute power. So the AI doesn't have to grind through raw tables: it asks for a ready, lightweight set and gets an answer right away. The context stays clean, the queries cheap, and the model does what it's genuinely good at — it analyzes and suggests action, instead of fighting the data format.\n\n---\n\n# Lay the foundation and organize your data — get in touch [The foundation]\n\nA single source of truth isn't a convenience for the people doing the reporting. It's the precondition for everything that comes next. All In One arranges the data once, and the whole WitCloud platform gets a solid, clean base — along with the next modules you run on it: KPI monitoring, customer segmentation, product analysis, an AI assistant.\n\n![](https://a.storyblok.com/f/296300/764135b48c/aio_05_moduly_platformy.png)\n\n*All In One arranges the data once — and every next module of the platform gets a ready, clean base.*\n\nAnd here's the crux. A well-designed, organized dataset lets you move quickly from questions to action: segment customers, analyze product profitability, ask the AI assistant straight out — without a week of stitching reports together and without guessing whether the numbers add up. All In One takes on the hardest part: gathering the data in one place and bringing it to a common language. What's left on your side is just decisions.\n\nThe best moment to lay that foundation is now — and the easiest way to start is a short conversation with us. **Instead of fighting your data — manage it.**\n\n::content-cta\n---\neyebrow: Free trial\nheading: See your data organized — while you're still in the free trial.\ndescription: \"Let's meet: we'll show All In One on your own sources, arranged into ready-made datamarts.\"\nbuttonText: Book a call\nbuttonHref: /contact\n---\n::","WITCLOUD PLATFORM · ALL IN ONE MODULE","1","5 min read","All In One — the WitCloud platform module that brings data from your store, ads, GA4 and marketplaces into one organized source, ready for reports, decisions and AI.",{"id":480,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":481,"copyright":19,"fieldtype":21,"meta_data":482,"is_external_url":32},191285268958824,"https://a.storyblok.com/f/296300/900x600/80fd4fadf9/13-ssot-dark.png",{},[484,487,490,493,495],{"_uid":485,"name":237,"content":486,"component":239},"f1a00001-0000-4000-8000-000000000001","All In One brings every data source into one warehouse on your own Google Cloud — unified and arranged into ready-made datamarts, so people and AI can read answers straight off it.",{"_uid":488,"name":283,"content":489,"component":239},"f1a00001-0000-4000-8000-000000000002","A single source of truth - WitCloud All In One",{"_uid":491,"name":287,"content":492,"component":239},"f1a00001-0000-4000-8000-000000000003","All In One brings every data source into one warehouse on your own Google Cloud - unified and arranged into ready-made datamarts, so people and AI can read answers straight off it.",{"_uid":494,"name":291,"content":481,"component":239},"f1a00001-0000-4000-8000-000000000004",{"_uid":496,"name":295,"content":296,"component":239},"f1a00001-0000-4000-8000-000000000005",[498],{"_uid":499,"href":132,"size":500,"text":501,"target":29,"rounded":500,"variant":31,"disabled":32,"component":33,"showArrow":39},"799e4e2a-4575-4f9f-89b9-30846035fd89","lg","Book a call","2026-06-30 00:00",[],"single-source-of-truth","content/framework/single-source-of-truth",-10,[],"d206dc5d-43ec-4f6b-bbca-a34e6d8f691f",[],{"data":511,"body":512,"excerpt":-1,"toc":522},{"title":19,"description":227},{"type":513,"children":514},"root",[515],{"type":516,"tag":517,"props":518,"children":519},"element","p",{},[520],{"type":521,"value":227},"text",{"title":19,"searchDepth":523,"depth":523,"links":524},2,[],{"data":526,"body":527,"excerpt":-1,"toc":533},{"title":19,"description":231},{"type":513,"children":528},[529],{"type":516,"tag":517,"props":530,"children":531},{},[532],{"type":521,"value":231},{"title":19,"searchDepth":523,"depth":523,"links":534},[],{"data":536,"body":537,"excerpt":-1,"toc":543},{"title":19,"description":473},{"type":513,"children":538},[539],{"type":516,"tag":517,"props":540,"children":541},{},[542],{"type":521,"value":473},{"title":19,"searchDepth":523,"depth":523,"links":544},[],{"data":546,"body":547,"excerpt":-1,"toc":553},{"title":19,"description":478},{"type":513,"children":548},[549],{"type":516,"tag":517,"props":550,"children":551},{},[552],{"type":521,"value":478},{"title":19,"searchDepth":523,"depth":523,"links":554},[],{"data":556,"body":557,"excerpt":-1,"toc":563},{"title":19,"description":427},{"type":513,"children":558},[559],{"type":516,"tag":517,"props":560,"children":561},{},[562],{"type":521,"value":427},{"title":19,"searchDepth":523,"depth":523,"links":564},[],{"data":566,"body":567,"excerpt":-1,"toc":573},{"title":19,"description":438},{"type":513,"children":568},[569],{"type":516,"tag":517,"props":570,"children":571},{},[572],{"type":521,"value":438},{"title":19,"searchDepth":523,"depth":523,"links":574},[],{"data":576,"body":577,"excerpt":-1,"toc":583},{"title":19,"description":388},{"type":513,"children":578},[579],{"type":516,"tag":517,"props":580,"children":581},{},[582],{"type":521,"value":388},{"title":19,"searchDepth":523,"depth":523,"links":584},[],{"data":586,"body":587,"excerpt":-1,"toc":593},{"title":19,"description":398},{"type":513,"children":588},[589],{"type":516,"tag":517,"props":590,"children":591},{},[592],{"type":521,"value":398},{"title":19,"searchDepth":523,"depth":523,"links":594},[],{"data":596,"body":597,"excerpt":-1,"toc":603},{"title":19,"description":349},{"type":513,"children":598},[599],{"type":516,"tag":517,"props":600,"children":601},{},[602],{"type":521,"value":349},{"title":19,"searchDepth":523,"depth":523,"links":604},[],{"data":606,"body":607,"excerpt":-1,"toc":613},{"title":19,"description":359},{"type":513,"children":608},[609],{"type":516,"tag":517,"props":610,"children":611},{},[612],{"type":521,"value":359},{"title":19,"searchDepth":523,"depth":523,"links":614},[],{"data":616,"body":617,"excerpt":-1,"toc":623},{"title":19,"description":309},{"type":513,"children":618},[619],{"type":516,"tag":517,"props":620,"children":621},{},[622],{"type":521,"value":309},{"title":19,"searchDepth":523,"depth":523,"links":624},[],{"data":626,"body":627,"excerpt":-1,"toc":633},{"title":19,"description":320},{"type":513,"children":628},[629],{"type":516,"tag":517,"props":630,"children":631},{},[632],{"type":521,"value":320},{"title":19,"searchDepth":523,"depth":523,"links":634},[],{"data":636,"body":637,"excerpt":-1,"toc":643},{"title":19,"description":260},{"type":513,"children":638},[639],{"type":516,"tag":517,"props":640,"children":641},{},[642],{"type":521,"value":260},{"title":19,"searchDepth":523,"depth":523,"links":644},[],{"data":646,"body":647,"excerpt":-1,"toc":653},{"title":19,"description":271},{"type":513,"children":648},[649],{"type":516,"tag":517,"props":650,"children":651},{},[652],{"type":521,"value":271},{"title":19,"searchDepth":523,"depth":523,"links":654},[],[656,670,684,698,712,725,807,822,848,900,931,954,1001,1024,1077,1106,1155,1180,1205],{"name":260,"created_at":261,"published_at":262,"updated_at":263,"id":264,"uuid":265,"content":657,"slug":301,"full_slug":302,"sort_by_date":169,"position":303,"tag_list":668,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":306,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":669,"default_full_slug":169,"translated_slugs":169},{"_uid":267,"title":260,"content":268,"eyebrow":109,"showTOC":39,"category":19,"priority":269,"readTime":270,"subtitle":271,"component":272,"eventDate":19,"heroImage":658,"meta_tags":660,"meta_title":297,"eventFormat":19,"heroButtons":666,"updatedDate":299,"bottomBlocks":667},{"id":274,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":275,"copyright":19,"fieldtype":21,"meta_data":659,"is_external_url":32},{},[661,662,663,664,665],{"_uid":279,"name":237,"content":280,"component":239},{"_uid":282,"name":283,"content":284,"component":239},{"_uid":286,"name":287,"content":288,"component":239},{"_uid":290,"name":291,"content":292,"component":239},{"_uid":294,"name":295,"content":296,"component":239},[],[],[],[],{"name":309,"created_at":310,"published_at":311,"updated_at":312,"id":313,"uuid":314,"content":671,"slug":342,"full_slug":343,"sort_by_date":169,"position":344,"tag_list":682,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":346,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":683,"default_full_slug":169,"translated_slugs":169},{"_uid":316,"title":309,"content":317,"eyebrow":109,"showTOC":39,"category":19,"priority":318,"readTime":319,"subtitle":320,"component":272,"eventDate":19,"heroImage":672,"meta_tags":674,"meta_title":338,"eventFormat":19,"heroButtons":680,"updatedDate":340,"bottomBlocks":681},{"id":322,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":323,"copyright":19,"fieldtype":21,"meta_data":673,"is_external_url":32},{},[675,676,677,678,679],{"_uid":327,"name":237,"content":328,"component":239},{"_uid":330,"name":283,"content":331,"component":239},{"_uid":333,"name":287,"content":328,"component":239},{"_uid":335,"name":291,"content":323,"component":239},{"_uid":337,"name":295,"content":296,"component":239},[],[],[],[],{"name":349,"created_at":350,"published_at":351,"updated_at":352,"id":353,"uuid":354,"content":685,"slug":381,"full_slug":382,"sort_by_date":169,"position":383,"tag_list":696,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":385,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":697,"default_full_slug":169,"translated_slugs":169},{"_uid":356,"title":349,"content":357,"eyebrow":109,"showTOC":39,"category":19,"priority":358,"readTime":270,"subtitle":359,"component":272,"eventDate":19,"heroImage":686,"meta_tags":688,"meta_title":377,"eventFormat":19,"heroButtons":694,"updatedDate":379,"bottomBlocks":695},{"id":361,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":362,"copyright":19,"fieldtype":21,"meta_data":687,"is_external_url":32},{},[689,690,691,692,693],{"_uid":366,"name":237,"content":367,"component":239},{"_uid":369,"name":283,"content":370,"component":239},{"_uid":372,"name":287,"content":367,"component":239},{"_uid":374,"name":291,"content":362,"component":239},{"_uid":376,"name":295,"content":296,"component":239},[],[],[],[],{"name":388,"created_at":389,"published_at":390,"updated_at":391,"id":392,"uuid":393,"content":699,"slug":420,"full_slug":421,"sort_by_date":169,"position":422,"tag_list":710,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":424,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":711,"default_full_slug":169,"translated_slugs":169},{"_uid":395,"title":388,"content":396,"eyebrow":109,"showTOC":39,"category":19,"priority":397,"readTime":270,"subtitle":398,"component":272,"eventDate":19,"heroImage":700,"meta_tags":702,"meta_title":416,"eventFormat":19,"heroButtons":708,"updatedDate":418,"bottomBlocks":709},{"id":400,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":401,"copyright":19,"fieldtype":21,"meta_data":701,"is_external_url":32},{},[703,704,705,706,707],{"_uid":405,"name":237,"content":406,"component":239},{"_uid":408,"name":283,"content":409,"component":239},{"_uid":411,"name":287,"content":406,"component":239},{"_uid":413,"name":291,"content":401,"component":239},{"_uid":415,"name":295,"content":296,"component":239},[],[],[],[],{"name":427,"created_at":428,"published_at":429,"updated_at":430,"id":431,"uuid":432,"content":713,"slug":458,"full_slug":459,"sort_by_date":169,"position":460,"tag_list":723,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":462,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":724,"default_full_slug":169,"translated_slugs":169},{"_uid":434,"title":427,"content":435,"eyebrow":109,"showTOC":39,"category":19,"priority":436,"readTime":437,"subtitle":438,"component":272,"heroImage":714,"meta_tags":716,"meta_title":449,"heroButtons":721,"updatedDate":456,"bottomBlocks":722},{"id":440,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":441,"copyright":19,"fieldtype":21,"meta_data":715,"is_external_url":32},{},[717,718,719,720],{"_uid":445,"name":237,"content":446,"component":239},{"_uid":448,"name":283,"content":449,"component":239},{"_uid":451,"name":287,"content":446,"component":239},{"_uid":453,"name":291,"content":454,"component":239},[],[],[],[],{"name":726,"created_at":727,"published_at":728,"updated_at":729,"id":730,"uuid":731,"content":732,"slug":800,"full_slug":801,"sort_by_date":169,"position":802,"tag_list":803,"is_startpage":32,"parent_id":804,"meta_data":169,"group_id":805,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":806,"default_full_slug":169,"translated_slugs":169},"Przestań przepalać budżet na jednorazowych klientów — LTV i retencja","2026-08-20T07:19:39.613Z","2026-09-02T10:59:11.738Z","2026-09-02T10:59:11.752Z",211029113342153,"78736e51-560e-41cc-99bc-47d81c3321ec",{"_uid":733,"title":734,"content":735,"eyebrow":736,"showTOC":39,"category":737,"priority":19,"readTime":19,"subtitle":738,"component":272,"eventDate":739,"heroImage":740,"meta_tags":742,"meta_title":743,"eventFormat":744,"heroButtons":745,"updatedDate":750,"bottomBlocks":751},"webinar-ltv-retencja-content-page","Stop Burning Your Budget on *One-Time Customers*.","## Who Really Is Your Customer? [Who's your customer?]\n\nMeet Stefan. Stefan is your customer, and he just made a purchase in your online store. You made money on that — great. But do you know the one thing that actually determines your margin?\n\n\u003Cdiv style=\"text-align: center; margin: 24px auto; max-width: 420px;\">\u003Cimg src=\"https://a.storyblok.com/f/296300/1226x1086/a712ff52c1/zrzut-ekranu-2026-08-08-204226.png\" alt=\"Get to know your customers\" style=\"width: 100%; height: auto; border-radius: 12px;\" />\u003C/div>\n\n- **Is this his first order or his fifth?** That determines whether you should pay for his next visit — or whether he'd come back anyway.\n- **How much did it cost to acquire him, and how much will he spend over the year?** If you only look at the first basket, you don't know how much you can really afford to pay for the next customer like him.\n- **Will he come back for a second purchase — or quietly disappear?** One-time buyers are usually the largest and most underrated group in your database.\n\nThere's an answer to every one of these questions — in your own data, not in guesswork. At the webinar, we show you how to get it.\n\n## You Don't Have to Choose Between Retention and Acquisition [Retention & acquisition]\n\nThat's a false choice, and it's costing you margin. See how combining insight from your customer base with your advertising costs lets you significantly increase profit on both fronts at once — backed by dedicated AI that continuously analyzes your e-commerce business and delivers ready-made business recommendations, with no waiting for an analyst's report.\n\n### Step 1: Work with the customers you already have\n\nSee which customers generate real profit, and which are just slipping into the \"at risk of churning\" segment. Build a precise lifecycle map based on your store's own data. Instead of blasting mass discounts to your entire list, automatically activate the customers who need a nudge toward a second purchase, and protect margin by excluding loyal customers from broad paid campaigns.\n\n### Step 2: Acquire customers based on data from your base\n\nStop burning your budget on deal-hunters and stop judging campaigns solely by the first purchase. Identify the channels and \"gateway products\" that attract the highest-LTV customers. Use your most valuable audience segments to feed advertising algorithms in Meta and Google Ads (e.g. PMax), driving traffic to your store that will naturally convert for years.\n\n## What Will You Actually Take Away From This Webinar? [Agenda]\n\nThis webinar is hands-on — no fluff. We'll show you concrete reports, analyses, and marketing strategies you can apply in your e-commerce store right away.\n\n1. **Which 8% of customers drive half your result** — You'll stop looking at your base as one homogeneous mass. You'll see exactly who your margin really stands on — and who you can stop paying to acquire, since they'd have bought anyway.\n2. **How many new customers never come back** — From your data, you'll see how many days it typically takes customers to place a second order. You'll set your activation sequence before that point — not blindly.\n3. **Whether customer quality is rising or falling** — Instead of looking at \"average sales,\" you'll see a cohort analysis that shows in black and white whether customers from recent campaigns are actually paying off.\n4. **How much you can afford to pay for a customer** — You'll understand why customer acquisition cost (CAC) can safely exceed the first basket value — as long as you can calculate what that customer will spend over a year.\n5. **Which channel actually brings in customers** — You'll learn to ask two different questions instead of one, and see why last-click hurts the channels that initiate purchase paths.\n6. **How to roll this out without an IT department** — You'll see how a segment defined once flows simultaneously into a report, an ad list, and a chat — and how it all runs on your own Google Cloud, with data that stays 100% yours.\n\n::content-cta\n---\neyebrow: \"LIVE WEBINAR\"\nheading: \"Not sure where your margin is really slipping today?\"\ndescription: \"Register and see, on hard data, where your numbers really stand.\"\nbuttonText: \"Register for free\"\nbuttonHref: \"#lead-form\"\n---\n::\n\n## Meet the Speaker [Speaker]\n\n::content-speaker\n---\nname: \"Krzysiek Modrzewski\"\nsubtitle: \"Co-founder, Witbee & WitCloud · 15+ yrs in analytics\"\nphotoLabel: \"Photo\"\nimage: \"https://a.storyblok.com/f/296300/1030x1186/d65624e682/krzysiek4.png\"\nimageAlt: \"Krzysiek Modrzewski\"\nintro: \"Not a theorist — day in, day out he helps e-commerce companies turn data chaos into real budget decisions. He went through the journey himself, from decision paralysis and incomplete GA4 data to automated segmentation, and at the webinar he'll show ready-made reports you can put to use right away.\"\n---\n::\n\n## Is This Workshop for You? [Who it's for]\n\nWe built this session for a specific group of e-commerce leaders.\n\n::content-qualifier\n---\nyesTitle: \"YES, if...\"\nyesItems:\n  - \"You're an e-commerce director, CMO, or owner tired of gut-feel decisions based on incomplete GA4 data.\"\n  - \"You're a head of analytics or data team lead who wants one consistent customer definition across reporting, ads, and email.\"\n  - \"You want to know the real health of your customer base at any moment and know where to focus your budget.\"\n  - \"You want to plan acquisition precisely and reach the right customers instead of just buying clicks.\"\n  - \"You want to know your customers' real LTV and weave that knowledge into your growth strategy.\"\nnoTitle: \"NOT for you if...\"\nnoItems:\n  - \"You're just starting out in e-commerce and don't yet have enough data or budget for these solutions to make sense.\"\n  - \"You're looking for a basic GA4 or Looker Studio tutorial — this is a webinar about data-driven decisions, not clicking through an interface.\"\n  - \"You'd rather run an analysis once and check it off — this is about an ongoing rhythm, not a one-time project.\"\n---\n::\n\n## Experience You Can Trust [Track record]\n\nWe've delivered dozens of Web & App analytics projects for companies of every scale, including leading market innovators — among them Media Expert, Superbet, eObuwie, eMAG, Neonet, Orange, Empik, Frisco, JD Sports, and Allegro.\n\n## You Have a Choice: Rising Acquisition Costs or Control Over Your Margin [Your choice]\n\nYou can keep accepting that every new customer costs more than the last one. You can keep focusing solely on the first transaction, ignoring the fact that your largest group of buyers will probably never come back.\n\n**Or** you can invest 60 minutes to see, based on hard data:\n\n✅ How to identify **\"gateway products\"** that attract customers who stay with your brand longer, and stop burning budget on assortment that only generates one-time volume. \u003Cbr>\n✅ Why judging a campaign solely by the first purchase hides about 35% of its true result, and how to correctly calculate **channel profitability**. \u003Cbr>\n✅ How to split your base into precise segments (returning, loyal, at risk of churning, among others) and **automatically refresh your audience lists** in Meta and Google Ads.\n\nStop subsidizing your ad platforms. Build a system where acquiring new customers and activating existing ones fuel each other.","Webinar","webinar","Free live webinar for e-commerce managers, directors, and owners.\n\u003Cbr>\u003Cb>Ads keep getting pricier, and doubling your budget doesn't double your sales — we'll show you how to combine profitable retention with effective acquisition using your own LTV data.\u003C/b>","2026-09-10 14:00",{"id":361,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":362,"copyright":19,"fieldtype":21,"meta_data":741,"is_external_url":32},{},[],"Stop Overspending on One-Time Customers | Free Webinar","Live online",[746],{"_uid":747,"href":748,"size":500,"text":749,"target":29,"variant":31,"component":33,"showArrow":39},"webinar-ltv-cta-1","#lead-form","Register for the webinar","2026-09-10 00:00",[752],{"_uid":753,"image":754,"steps":756,"formId":779,"header":780,"systems":781,"anchorId":787,"formName":788,"component":789,"buttonText":790,"description":791,"errorMessage":19,"progressStyle":30,"nextButtonText":19,"prevButtonText":19,"successMessage":19,"brainWebinarSlug":19,"moduleBackground":19,"privacyPolicyLink":792,"privacyPolicyText":796,"clickMeetingRoomId":797,"getResponseCampaignId":798,"privacyPolicyLinkText":799},"2187087b-d2a8-4a6c-98e6-ebf66884b328",{"id":169,"alt":169,"name":19,"focus":169,"title":169,"source":169,"filename":19,"copyright":169,"fieldtype":21,"meta_data":755},{},[757],{"_uid":758,"title":759,"fields":760,"component":778},"56cd946a-a8df-4c8f-a422-d64cd66458fa","Register",[761,766,770,774],{"_uid":762,"name":763,"type":521,"label":764,"required":39,"component":765,"fullWidth":32},"656fd222-d9fc-4b67-b8dd-170549efc64b","firstName","First name","multi-step-form-field",{"_uid":767,"name":768,"type":521,"label":769,"required":39,"component":765,"fullWidth":32},"2c4dd55a-2021-42dd-b730-8ec3374d8f3a","lastName","Last name",{"_uid":771,"name":772,"type":521,"label":773,"required":32,"component":765,"fullWidth":39},"40e3c1a6-208f-4abe-ab73-d62b589a2811","company","Company name",{"_uid":775,"name":776,"type":776,"label":777,"required":39,"component":765,"fullWidth":39,"businessOnly":39},"39663d31-628d-4bfb-bcb5-ee2a0ac5e4d3","email","Email address","multi-step-form-step","webinar-customer-3-0","Reserve your spot at the webinar",[782,783,784,785,786],"getresponse","mail","firestore","witcrm","clickmeeting","lead-form","Webinar o analizie klienta — rejestracja na żywo","multi-step-form","Yes, sign me up for the webinar","Fill in the form and we'll email you the meeting link.\n\u003Cbr>\u003Cbr>\n\u003Cb>Thursday, September 10 at 2:00 PM",{"id":793,"url":19,"linktype":794,"fieldtype":46,"cached_url":795},"9557bcaa-747f-4659-b71b-3163c15b79f4","story","legal/privacy-policy","I accept","10147824","LRLFr","the terms and privacy policy","webinar-ltv-retencja-akwizycja","content/webinars/webinar-ltv-retencja-akwizycja",-20,[],191214107633568,"21120530-10b9-4626-b030-1bc0d42c3d6c",[],{"name":465,"created_at":466,"published_at":467,"updated_at":468,"id":469,"uuid":470,"content":808,"slug":504,"full_slug":505,"sort_by_date":169,"position":506,"tag_list":820,"is_startpage":32,"parent_id":305,"meta_data":169,"group_id":508,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":821,"default_full_slug":169,"translated_slugs":169},{"_uid":472,"title":473,"content":474,"eyebrow":475,"showTOC":39,"category":19,"priority":476,"readTime":477,"subtitle":478,"component":272,"eventDate":19,"heroImage":809,"meta_tags":811,"meta_title":489,"eventFormat":19,"heroButtons":817,"updatedDate":502,"bottomBlocks":819},{"id":480,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":481,"copyright":19,"fieldtype":21,"meta_data":810,"is_external_url":32},{},[812,813,814,815,816],{"_uid":485,"name":237,"content":486,"component":239},{"_uid":488,"name":283,"content":489,"component":239},{"_uid":491,"name":287,"content":492,"component":239},{"_uid":494,"name":291,"content":481,"component":239},{"_uid":496,"name":295,"content":296,"component":239},[818],{"_uid":499,"href":132,"size":500,"text":501,"target":29,"rounded":500,"variant":31,"disabled":32,"component":33,"showArrow":39},[],[],[],{"name":823,"created_at":824,"published_at":247,"updated_at":825,"id":826,"uuid":827,"content":828,"slug":841,"full_slug":842,"sort_by_date":169,"position":843,"tag_list":844,"is_startpage":32,"parent_id":845,"meta_data":169,"group_id":846,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":847,"default_full_slug":169,"translated_slugs":169},"Google Analytics 4 [GA4] BigQuery - traffic sources, sessions, attribution, marketing costs and ready data for analysis","2026-06-23T08:28:42.839Z","2026-08-21T07:00:43.295Z",190520208788172,"4a92d87b-04d7-4610-87e4-83ec85851626",{"_uid":829,"title":830,"content":831,"eyebrow":19,"showTOC":39,"category":219,"readTime":19,"subtitle":832,"component":272,"heroImage":833,"meta_tags":837,"meta_title":830,"heroButtons":838,"updatedDate":839,"bottomBlocks":840},"70c651b3-e211-4834-ade3-941e7ce294fd","Google Analytics 4 BigQuery - traffic sources, sessions, attribution, marketing costs and ready data for analysis","## Continuation of a series of posts about Google Analytics 4 data in BigQuery [Article series]\n\n\n\nThis article is part of a series of posts about Google Analytics 4 as well as data export to Google BigQuery. It consists of the following items:\n\n\n\n- [#1 Google Analytics 4 BigQuery – why should you use it? ](https://witbee.com/blog/google-analytics-4-bigquery-why-you-should-use-it)  \n- [#2 Google Analytics 4 BigQuery – 9 challenges that are sure to surprise you when analysing your data](https://witbee.com/blog/google-analytics-4-bigquery-9-challenges-to-surprise-you-in-data-analysis) \n- [#3 Google Analytics 4 BigQuery – traffic sources, sessions, attribution, marketing costs and ready-to-analyse data](https://witbee.com/blog/google-analytics-4-bigquery-traffic-sources-sessions-attribution-marketing-costs-and-ready-data-for-analysis) (which you are currently reading)\n\n\n\nThe last post was about analytical challenges related to data analysis in Google BigQuery. Companies as well as analysts and specialists working for them should focus mainly on making decisions based on data, and not on laborious and expensive preparation as well as processing of data for their analysis.\n\n\n\nIn response to this challenge, in our [WitCloud platform](https://witbee.com/witcloud) we decided to create an analytical module that, based on the exported Google Analytics 4 data to Google BigQuery, will solve problems with their processing and prepare these data in such a form so that they are ready for use in the company for various analyzes or integration with other systems.\n\n\n\nIn this article, we will step by step discuss what modifications we have made to the data and how we approached the design of the data structure in Google BigQuery.\n\n\n\n![Google Analytics 4 BigQuery - WitCloud - Sessions, Attributions](https://a.storyblok.com/f/46798/868x362/c5426a763d/google-analytics-4-bigquery-witcloud-events-to-sessions.png)\n\n## Enriching the events table with traffic sources [Enriching with traffic sources]\n\n### The issue of poor traffic source data in Google Analytics 4 [GA4] BigQuery Export\n\n\nIn article [#2 Google Analytics 4 BigQuery - 9 challenges, that will surprise you when analyzing data](https://witbee.com/blog/google-analytics-4-bigquery-9-challenges-to-surprise-you-in-data-analysis), we raised the problem of the lack of calculated traffic sources for specific sessions and poor access to Google Ads data. In the default exported “events_” table we have only the following fields available, i.e. traffic_source.source, traffic_source.medium, traffic_source.name (campaign name).\n\n\n\nReferring to our previous article; however, the problem is that these are fields that inform us about what source occurred in the first campaign of the time of acquiring this user, and not about the source that occurred in a given session, as we can view it in the reports and the \"Session source/medium\" dimension in the Google Analytics 4 panel. This means that in the panel, Google provides us with processed data, and we will have to do it ourselves using raw data in BigQuery.\n\n\n\n![Google Analytics 4 BigQuery traffic_source field description](https://a.storyblok.com/f/46798/986x327/0de56d0a96/google-analytics-4-bigquery-traffic-source-field-desc.png)\n\n\n\nUsing these fields in the table, we will achieve a different image than in the case of the “Session source / medium” dimension in the panel.\n\n\n\n\u003Cdiv style=\"text-align:center\">\n\u003Cimg src=\"https://a.storyblok.com/f/46798/790x164/1ae9c65264/google-analytics-4-bigquery-traffic-source-field-behaviour.png\">\n\u003C/div>\n\n\n\nMoreover, the table lacks more detailed information about Google Ads campaigns, as was the case in the export of data of Google Analytics Universal 360 (premium version)\n\n\n\n\n\n\u003Cdiv style=\"text-align:center\">\n\u003Cimg src=\"https://a.storyblok.com/f/46798/713x578/acc36d50a3/google-analytics-4-bigquery-missing-google-ads-fields.png\">\n\u003C/div>\n\n\n\n### The solution to the problem is all about enriching the events tables with the sources of session traffic in the Google Analytics 4 and Universal Analytics models.\n\n\n\nIn response to this challenge, we decided to enrich the \"events_\" table with additional groups of fields that provide information about the sources of traffic that occur in a particular session as well as additional information about the Google Ads campaign. \n\n\n\nThe data was enriched in the Google Analytics 4 model, which does not create a new session when changing the campaign source during the session, and in the Google Universal Analytics model, which creates a new session every time a new traffic source appears.\n\n\n\n![Google Analytics 4 BigQuery Vs WitCloud Tables](https://a.storyblok.com/f/46798/861x629/cfb22d8638/google-analytics-4-bigquery-witcloud-vs-events.png)\n\n\n\n#### Ability to track users between different devices\n\n\n\nBefore we discuss how individual models work on cases, we must mention a significant factor that we had to take into consideration when creating the module, i.e. tracking users between devices such as computers, smartphones and tablets (cross-device).\n\n\nGoogle Analytics 4 has appropriate functionalities that can connect events on the user's path based on 3 dimensions, i.e.:\n\n\n\n- **Device ID**, i.e. a browser cookie or an identifier in the application\n- **User ID**, i.e. an implementable user ID from our database, e.g. after registering/logging in to our website/application\n- **Google ID (Google Signals)**, i.e. an identifier connected to a logged-in user in Google (requires additional activation in the administrative settings of the service)\n\n\nBy default, Google Analytics only tracks the user based on Device ID, which is a cookie or application ID. This means that if we enter the selected website from a mobile device and then from a desktop computer, Google Analytics will report information about 2 different users acquired from 2 different channels. Based on this, it is not possible to track users between devices, because each device and each browser will have a different user ID.\n\n\n\nHowever, if we decide to send our own user ID in the implementation, e.g. after logging in/registering or activating the Google Signals option, Google will perform a deduplication of users on all collected data, i.e. it will find a connection between devices and provide us with more accurate data on users as well as their behaviour.\n\n\n\nIn the Google Analytics 4 panel, we can decide whether we want to see data with or without deduplication based on the \"Reporting Identity\" settings.\n\n\n\n![Google Analytics 4 Reporting Identity](https://a.storyblok.com/f/46798/834x549/d25537595b/google-analytics-4-bigquery-reporting-identity.png)\n\n\n\nIn Google BigQuery, we can perform user deduplication only on the basis of 2 dimensions, i.e. Device ID and User ID, because as far as legal aspects are concerned, Google Signals data is not shared in the Google Analytics 4 data export.\n\n\n\n![Google Analytics 4 BigQuery Device Id, User Id and No Google Singals ID](https://a.storyblok.com/f/46798/771x454/dda30cd467/google-analytics-4-bigquery-identity-user.png)\n\n\n\n#### Sessions & Traffic Source Approach - Google Analytics 4 vs Google Analytics Universal\n\n\n\nThe following diagram will allow us to better answer 2 significant and related to each other questions:\n\n\n\n\u003Col>\n  \u003Cli>How does deduplication of users using the user_id parameter affect the attribution of traffic sources?\u003C/li>\n  \u003Cli>How has the logic of counting sessions in Google Analytics 4 vs Google Analytics Universal changed?\u003C/li>\n\u003C/ol>\n\n\n\n![Google Analytics 4 BigQuery - Cross Device Sessions](https://a.storyblok.com/f/46798/1145x533/8f22588d1f/google-analytics-4-bigquery-diagram-cross-device-sessions.png)\n\n\n\nBrief description of the scheme:\n\n\n\n- The user entered the website from a mobile device after being referred from Facebook, which resulted in the creation of a new session\n- During the session generated by Facebook (within 30 minutes of the lack of interaction), the user clicked on the page again through a Google Ad\n- After some time, the user decided to enter the website again, this time from a desktop computer without being redirected (direct entry)\n- On both mobile and desktop devices, the user was logged in and the “user_id” parameter was sent\n\n\n\nNow let's take a look at how traffic source attribution and session calculation for each model will behave.\n\n\n\n**Google Analytics 4 - Cross Device Model**\n\n\n\n![Google Analytics 4 BigQuyer - GA4 Cross Device Model](https://a.storyblok.com/f/46798/689x138/63d1b8837b/google-analytics-4-bigquery-ga4-cross-device-model.png)\n\n\n\nIn the Google Analytics 4 - Cross Device model, when the user enters a website from a mobile device and is redirected from Facebook, a new session will be created. When a user clicks through a Google ad from the same device during a session, no new session is created because Google Analytics 4 does not create a new session when the campaign source changes during the previous session.\nThe moment the user enters a website from a desktop device and it is a direct entry (“Direct” traffic), this source will be overwritten with the last source of traffic that occurred in the previous session - it will not be Facebook, but Google, which previously did not cause the creation of a new session on a mobile device.\n\n\n\n**Google Analytics 4 - Device Model**\n\n\n\n![Google Analytics 4 BigQuery - Device Model](https://a.storyblok.com/f/46798/689x157/c7f291706b/google-analytics-4-bigquery-ga4-device-model.png)\n\n\n\nIn the Google Analytics 4 model based on Device ID (in the case of a website, this will be a cookie), each browser will have a new user ID generated. In such a situation, the first session will have a Facebook source assigned, and the second session, which occured on another device, will have a “Direct” source. Google campaigns will be ignored in this case, because the logic of Google Analytics 4 does not take into consideration the creation of a new session when changing the traffic source. The second session (direct entry) will not inherit the traffic source, as it is in no way related to the previous device (no deduplication and use of user_id). It will be direct, then.\n\n\n\n\n**Universal Analytics - Device Model**\n\n\n\n![Google Analytics 4 BigQuery Device Model](https://a.storyblok.com/f/46798/687x182/6c23c8306d/google-analytics-4-bigquery-ua-device-model.png)\n\n\n\nIn the Universal Analytics model based on Device ID (currently and historically used in Google Analytics Universal), the Facebook source will be assigned in the first session. A new session will then be created for the Google source, as Universal Analytics creates a new session each time the campaign source is changed during the session. When the user enters directly from the desktop device, a third session will be created, which will not be overwritten with a Google value, as it is not in any way related to the previous device (no deduplication and use of user_id). It will be direct, then.\n\n\n\n**Universal Analytics - Cross-Device Model**\n\n\n\n![Google Analytics 4 BigQuery Cross Device Model](https://a.storyblok.com/f/46798/683x189/995cdfb460/google-analytics-4-bigquery-ua-cross-device-model.png)\n\n\n\nThe Universal Analytics model based on cross-device is a novelty that we decided to recreate on the basis of a dedicated approach related to user deduplication in Google Analytics 4, but keeping the old approach, which assumes creating a new session when the source of the campaign changes during the session. In this way, the first session will have the ‘facebook’ value, then a new session will be created, for the Google source, because Universal Analytics creates a new session every time the campaign source changes during the session. After direct input from the desktop device, a third session will be created, which will be overwritten with Google value, because we are able to connect users to each other on the basis of deduplication using user_id.\n\n\n\n#### Why have we prepared three data models?\n\n\n\nDecisions about reporting with the use of the chosen Google Analytics model may depend on the preferences of the organization. That is why, we wanted each company to be able to make its own decisions about this choice or be able to compare data in different models.\n\n\n\nFor this reason, we have prepared data in 3 models, i.e.:\n\n\n\n- Google Analytics 4 Cross Device including Deduplication\n- Google Analytics Universal Cross Device including deduplication\n- Google Analytics Universal Device without deduplication (known and liked from Google Analytics Universal)\n\n\n\n## Event grouping into sessions, i.e. session tables for Google Analytics 4 data [Grouping events into sessions]\n\n\n### Event Table vs Session Table\n\n\n\nAn event table is a table that contains rows, each of them corresponds to a single event with all the attributes collected based on the implementation on the website or in the application. This is how Google Analytics 4 data is dumped when we start the function of exporting it to Google BigQuery. It enables to view all event parameters in great detail.\n\n\n\n![Google Analytics 4 BigQuery Screen Events Table](https://a.storyblok.com/f/46798/901x472/bc104a0435/google-analytics-4-bigquery-events-table.png)\n\n\n\nA session table is a table that contains rows,  each of them corresponds to one session - it contains grouped and calculated information based on all events that occurred in the event table.\n\n\n\n![Google Analytics 4 BigQuery Calculated Sessions Table](https://a.storyblok.com/f/46798/697x230/acfeb88331/google-analytics-4-bigquery-sessions-table.png)\n\n\n\n### Why did we decide to create a session table?\n\n\n\nThe key issue was to provide a relatively light table for the tools responsible for data visualization. The session table, due to the fact that it has aggregated and converted values, takes up much less space compared to the event table.\n\n\n\n\nFor example, the event table, which contained 850,000 events, had a weight of 1.5 GB.\nThe session table that was created based on these events had just 52,000 rows and its weight was 83 MB.\n\n\n\n![Google Analytics 4 BigQuery - Events vs Sessions Tables](https://a.storyblok.com/f/46798/627x203/392bc8ddec/google-analytics-4-bigquery-events-vs-sessions-table.png)\n\n\n\n\nAll visualization tools integrated with Google BigQuery perform an SQL query, as we mentioned in our first article here. By questioning a smaller table, visualizations work much faster and cheaper.\n\n\n\nWhen preparing the session table, we thought about calculating the most popular metrics used for various reports and adding information about campaign sources, gellocations, devices or all transaction information. Therefore, what we obtain is a much lighter table, still very rich in information, without having to write additional SQL queries related to the event table.\n\n\n\n\n![Google Analytics 4 BigQuery - WitCloud Sessions Table](https://a.storyblok.com/f/46798/1030x643/d16245bda9/google-analytics-4-witcloud-sessions-table.png)\n\n\n\n### The module provides 3 session tables in the following models, i.e. Google Analytics 4, Universal Analytics Cross-Device and Universal Analytics Device\n\n\n\nBased on the above-mentioned examples in the section on the \"events\" table, we already know that each model, i.e. Google Analytics 4, Universal Analytics Cross-Device and Universal Analytics Device will be able to have a different number of sessions and different traffic sources. Therefore, we decided to create 3 tables for particular models that have the same field scheme (metrics and dimensions).\n\n\n\n![Google Analytics 4 BigQuery - WitCloud Sessions in 3 models](https://a.storyblok.com/f/46798/442x339/12294d8207/google-analytics-4-bigquery-sessions-witcloud-3-models.png)\n\n\n\n### Session tables include currency conversions for stores selling in multiple markets\n\n\n\n\nIf users can make purchases in different currencies on our website or in the application, we must ensure that the value is converted to the currency that has been established in the settings of the respective service. This requires downloading the exchange rate from a given day through the API and creating additional calculation fields. That is why, we decided to make this task easier and automatically convert the values for transactions and products in our session table, according to the established currency in the Google Analytics 4 administrative settings.\n\n![Google Analytics 4 BigQUery - Convert Currency Automatically](https://a.storyblok.com/f/46798/1062x225/9f3f7346d7/google-analytics-4-currency-conversion-aproach.png)\n\n\n\n![Google Analytics 4 BigQuery Currency Converted Fields](https://a.storyblok.com/f/46798/756x475/b685923dbf/google-analytics-4-bigquery-currency-converted-fields.png)\n\n## Google Analytics 4 [GA4] BigQuery - conversion attribution [Conversion attribution]\n\n\n\n### Attribution of traffic sources in Google BigQuery\n\n\n\nOwning Google Analytics 4 data in BigQuery, which was enriched with traffic sources in various models, we couldn't resist preparing some additional tables that contain the attribution of marketing channels. As in the case of the session table, we have included tables in 3 models here, i.e. Google Analytics 4 Cross Device, Google Analytics Universal Cross Device and Google Analytics Universal Device.\n\n\n\n![Google Analytics 4 BigQuery - WitCloud Attribution in 3 models](https://a.storyblok.com/f/46798/338x259/d0cf856eaa/google-analytics-4-bigquery-attribution.png)\n\n\n\nThe attribution is performed for all events that have been marked as a conversion in the Google Analytics panel.\n\n\n\n\n![Google Analytics 4 Conversions Events](https://a.storyblok.com/f/46798/1125x264/7156f7749f/google-analytics-4-conversions.png)\n\n\n\n### What do the attribution tables contain?\n\n\n\nAttribution tables contain information about conversion paths in 5 different attribution models, i.e. last click non direct, first click, linear, position based and timedecay.\n\n\n\n![Google Analytics 4 BigQuery - Attribution Calculation Table Schema](https://a.storyblok.com/f/46798/998x617/a92fa0d1a5/google-analytics-4-bigquery-attribution-table-schema-desc.png)\n\nThe data allows for a detailed analysis of all user paths leading to conversion. Having a calculated score for each model, we can multiply the weight (attribution_score) by the conversion value and obtain an accurate result for reporting purposes.\n\n\n\n![Google Analytics 4 BigQuery - Attribution Conversion Paths Example](https://a.storyblok.com/f/46798/903x149/2867ea71dc/google-analytics-4-bigquery-attribution-conversion-paths-example.png)\n\n\n\nIf our conversion is a “purchase” event, we will also find all information about transactions and sold products in the table. This gives us a lot of additional possibilities, e.g. we can data from CRM on profit based on transaction and product identifiers and check which marketing channels support particular product groups on the path to purchase.\n\n\n\n![Google Analytics 4 BigQuery Attribution Models](https://a.storyblok.com/f/46798/649x353/edebcd629f/google-analytics-4-bigquery-attribution-products.png)\n\n\n\n## Google Analytics 4 BigQuery module in WitCloud - start your analytical adventure in 30 minutes [WitCloud module]\n\n\n\n### Configuration of data export in Google BigQuery and creation of an account in WitCloud\n\n\n\nYou can start the adventure with the data described above in less than 30 minutes. All you need is a project on the Google Cloud Platform and a data export of Google Analytics 4 to BigQuery.\nIf you create a Google Cloud Platform settlement account for the first time, you'll get $300 to use for the first 90 days\n\n\n\n[How to set up a project on Google Cloud Platform](https://witbee.com/docs/start/how-to-start/#setting-up-the-google-cloud-platform-project)\n\n[How to start exporting Google Analytics 4 data to BigQuery](https://support.google.com/analytics/answer/9823238?hl=en&ref_topic=9359001#step3&zippy=%2Cin-this-article)\n\n\n\nThe next step is to create an account and project in the WitCloud platform. We offer a 14-day trial period. So taking into account $300 to get started with Google and our trial period, you can start data analysis for free.\n\n\n\n[How to set up a project on the WitCloud platform](https://witbee.com/docs/start/how-to-start/#create-an-account-and-create-a-project-in-witcloud-platform)\n\n\n\n[Google Cloud Free Trial & WitCloud Free Trial']('https://a.storyblok.com/f/46798/358x307/3102ae6e2f/google-cloud-witcloud.png)\n\n\n\n### How to set up a project on the WitCloud platform\n\nThe WitCloud platform can automatically download and process BigQuery data not only for Google Analytics 4, but also for popular advertising systems, e-commerce platforms, search console data and Google sheets.\n\n\n\n\n\nIn the first place, we recommend starting the following modules:\n\n\n\n- [Google Ads](https://witbee.com/docs/collect/google-ads-to-bigquery/) - to combine Google Ads campaign data with the GA4 module later\n- [Google Analytics 4 BigQuery](https://witbee.com/docs/collect/google-analytics-4-bigquery/)\n- in order to obtain the tables discussed in the article\n\n\n\nIt is recommended to configure other marketing sources at the next stage:\n\n\n\n- [Ad Systems](https://witbee.com/witcloud/integrations?cat=Ad%2520System)\n- [E-commerce platforms](https://witbee.com/witcloud/integrations?cat=Ecommerce)\n\n\n\n![WitCloud Platform - All Marketing Data in Google BigQuery ](https://a.storyblok.com/f/46798/926x403/765588f1d0/witcloud-all-integration.png)\n\n\n\nIf you decide to give it a try and encounter any difficulties while activating the integration, do not hesitate to ask us a question via the chat located in the lower right corner of the website.\n\n\n\n","Simple and fast analysis of Google Analytics 4 data in BigQuery thanks to the WitCloud platform. Session tables, marketing channel attribution and more.",{"id":834,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":835,"copyright":19,"fieldtype":21,"meta_data":836,"is_external_url":32},190527407462478,"https://a.storyblok.com/f/296300/900x600/abccb0f082/10-ga4-bigquery-ready-data.png",{},[],[],"2025-02-25 00:00",[],"google-analytics-4-bigquery-traffic-sources-sessions-attribution-marketing-costs-and-ready-data-for-analysis","content/knowledge/google-analytics-4-bigquery-traffic-sources-sessions-attribution-marketing-costs-and-ready-data-for-analysis",0,[],191213970958235,"c4d63873-b48c-4c11-8717-9675a264ef31",[],{"name":849,"created_at":850,"published_at":247,"updated_at":851,"id":852,"uuid":853,"content":854,"slug":895,"full_slug":896,"sort_by_date":169,"position":843,"tag_list":897,"is_startpage":32,"parent_id":804,"meta_data":169,"group_id":898,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":899,"default_full_slug":169,"translated_slugs":169},"Jak wdrożyć automatyzację raportowania w e-commerce","2026-06-22T18:55:18.386Z","2026-08-21T07:00:42.881Z",190320305753351,"6401d6f9-942a-43c3-89c9-dded10560db9",{"_uid":855,"title":856,"content":857,"eyebrow":736,"showTOC":39,"category":737,"readTime":19,"subtitle":858,"component":272,"heroImage":859,"meta_tags":863,"meta_title":864,"heroButtons":865,"updatedDate":869,"bottomBlocks":870},"raportowanie-content-page","End the Waiting: How to Automate E-commerce Reporting","## Why you should watch this [Why watch?]\n\nWithout a solid reporting system:\n\n- You wait a week for your “real ROAS” report — instead of making decisions in 10 minutes\n- Marketing, Finance, and Sales argue about whose numbers are “more correct” — the Many Truths Syndrome\n- Your business has hit an analytics “glass ceiling” — every new market or ad channel multiplies the chaos in your spreadsheets\n- You can’t implement AI because your data foundations are too messy\n\nIn this webinar, we’ll show you the proven system that changes all of this.\n\n## What you’ll learn [Agenda]\n\nThis is not a theoretical talk. We’ll walk you through a concrete methodology and system that lets you build one central source of truth.\n\n1. **Data Warehouse Demystified** — Understand what it’s really about. We’ll show you why a data warehouse is not an “expensive IT project” — it’s a non-negotiable strategic foundation for scaling e-commerce and implementing AI.\n2. **End of “Black Boxes”** — We’ll prove why “renting” data from SaaS tools (GA4, Ads, CRM) is a strategic mistake. You’ll understand why data ownership is the only path to full control and flexibility.\n3. **Multi-Market Reporting (Case Study)** — See how one of our clients uses this method to scale reporting across 12+ markets. Learn how to avoid “multiplying chaos” when adding new currencies and countries.\n4. **The 3 Core Data Layers** — Learn the 3 data layers: raw (source data), processed (Datamart), and visualized (Looker). Understand why the middle layer — the Datamart — is the heart of the entire system.\n5. **Security and Full Control** — By taking ownership of your data (e.g. on your own Google Cloud project), you control access and security. We’ll show you how to do it smartly and in compliance with regulations.\n6. **The Plan for One Source of Truth** — We’ll show you the architecture and steps to build a central source of truth — connecting data from all your systems (GA4, Ads, CRM) in one consistent place.\n\n## About the speaker [Speaker]\n\n**Krzysiek Modrzewski** — Poland’s leading expert in analytics and marketing strategy with over 15 years of experience. Co-founder of Marketing Masters and Witbee.\n\n- **Practitioner, not theorist:** Helps companies transform data chaos into real profits (podcast “Od Danych Do Zysku”) and co-created educational projects that attracted over 100,000 participants.\n- **Knows your pain:** Has personally gone from “decision paralysis” to full automation.\n- **Has a ready solution:** In this webinar, he shares the system he had to build himself to escape “analytics hell.”\n\n## Is this webinar for you? [For whom?]\n\n**✅ Yes, this is for you if:**\n- You’re an E-commerce Director, CMO, or Owner tired of making gut-feel decisions while waiting a week for real ROAS data\n- You’re a Head of Analytics or Data Team Lead watching your team get stuck being a “report factory” instead of doing strategic analysis\n- You feel your business has hit an analytics “glass ceiling” — adding a new market or ad channel causes exponential chaos in your spreadsheets\n- You’re tired of the “Many Truths Syndrome” (Marketing, Finance, and Sales all show different numbers) and want to build one central source of truth\n- You genuinely want to prepare your company for AI implementation, not just talk about it — and you know you need to clean up your data first\n\n**❌ Not for you if:**\n- You’re just starting out in e-commerce with one store, one market, and one ad channel (your problem isn’t big enough yet)\n- You’re looking for a basic tutorial on “how to install GA4” or “how Looker Studio works” (we talk strategy and architecture, not clicking through interfaces)\n- You expect a “magic button” that solves everything in 5 minutes without any effort or change in your approach to data\n\n## You have a choice: Chaos or Control [Your choice]\n\nYou can keep living in “Analytics Hell” — waiting a week for your real ROAS report and making strategic decisions based on gut feeling because your key analyst is on vacation.\n\n**Or** you can invest 60 minutes to see a proven system that:\n\n- ✅ **Gives you one central source of truth**\n- ✅ **Unlocks scaling to new markets** without chaos\n- ✅ **Genuinely prepares your company for AI implementation**\n\nSee how to escape data chaos and reclaim your time for real analysis.","Free webinar for e-commerce managers, directors, and owners.\n\u003Cbr>\u003Cb>Automate your reporting — make decisions in 10 minutes, not after a week of waiting.\u003C/b>\nWatch the recording on demand.\u003Cbr>\n\u003Cb>For e-commerce managers, directors, owners, and C-level executives\u003C/b>",{"id":860,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":861,"copyright":19,"fieldtype":21,"meta_data":862,"is_external_url":32},190524925466467,"https://a.storyblok.com/f/296300/900x600/584f3959ea/08-automate-reporting.png",{},[],"Automate E-commerce Reporting: Data Warehouse & True ROAS | Webinar",[866],{"_uid":867,"href":748,"size":500,"text":868,"target":29,"variant":31,"component":33,"showArrow":39},"raportowanie-cta-1","Watch the webinar now","2025-12-11 00:00",[871],{"_uid":872,"steps":873,"header":889,"systems":890,"anchorId":787,"component":789,"buttonText":891,"description":892,"progressStyle":30,"privacyPolicyLink":893,"privacyPolicyText":796,"getResponseCampaignId":894,"privacyPolicyLinkText":799},"2bdbb7ef-2f44-49d5-abcb-a95c9ed1a61e",[874],{"_uid":875,"title":759,"fields":876,"component":778},"bd6b9560-59b2-47ec-bf65-5617007505c8",[877,879,881,883,887],{"_uid":878,"name":763,"type":521,"label":764,"required":39,"component":765,"fullWidth":32},"d022263a-4745-4adc-937e-2726736e307c",{"_uid":880,"name":768,"type":521,"label":769,"required":39,"component":765,"fullWidth":32},"7cfed848-ba87-4b24-9486-e33d31f6ad60",{"_uid":882,"name":772,"type":521,"label":773,"required":39,"component":765,"fullWidth":39},"b4028e08-a5c0-4f32-bcea-adb3d250d356",{"_uid":884,"name":885,"type":521,"label":886,"required":32,"component":765,"fullWidth":39},"877e17c4-0efb-4aab-b6e0-b7bfeb3c509e","website","Website",{"_uid":888,"name":776,"type":776,"label":777,"required":39,"component":765,"fullWidth":39,"businessOnly":39},"af0b3f23-b957-4c06-9c44-958ad7ad84d0","Watch the webinar recording",[782,783,784],"Register to receive the recording link","Fill in the form and we’ll send you the recording link by email. Leave “analytics hell” behind and automate reporting in your e-commerce business.\n\u003Cbr>\u003Cbr>\n\u003Cb>Available on demand — watch the full 60-minute session at any time",{"id":793,"url":19,"linktype":794,"fieldtype":46,"cached_url":795},"iNpAF","jak-wdrozyc-automatyzacje-raportowania-w-e-commerce","content/webinars/jak-wdrozyc-automatyzacje-raportowania-w-e-commerce",[],"9d12baf0-d76b-4563-bf79-3ee35b17a219",[],{"name":901,"created_at":902,"published_at":247,"updated_at":903,"id":904,"uuid":905,"content":906,"slug":925,"full_slug":926,"sort_by_date":169,"position":843,"tag_list":927,"is_startpage":32,"parent_id":928,"meta_data":169,"group_id":929,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":930,"default_full_slug":169,"translated_slugs":169},"Case Study: Unitrailer x WitCloud","2026-06-22T13:52:15.776Z","2026-08-21T07:00:42.243Z",190245829793290,"1aaab420-9db3-4222-b644-d7ca2987c5c2",{"_uid":907,"title":908,"content":909,"eyebrow":910,"showTOC":39,"category":911,"readTime":19,"subtitle":912,"component":272,"heroImage":913,"meta_tags":917,"meta_title":908,"heroButtons":922,"updatedDate":923,"bottomBlocks":924},"dd37c425-203a-498b-bf7c-87696943c328","25 markets, nearly 100 data sources: How Unitrailer turned data chaos into fuel for growth","## About the client\n\n![](https://a.storyblok.com/f/296300/1999x265/5f88a993bc/logo_unitrailer.png)\n\n\n[**Unitrailer**](https://unitrailer.pl/) is a European leader in the sale of car trailers, parts, and accessories. The company operates in an e-commerce model and serves multiple markets simultaneously, running advertising campaigns and analytics on dozens of different accounts and platforms.\n\nThe growing scale of operations meant that the existing data processing model required process automation.\n\n---\n\n## The Challenge\n\nUnitrailer's dynamic expansion into **25 European markets** generated immense data complexity.\n\nThe company had to manage a multidimensional matrix of marketing, analytical, and sales data. This included:\n\n* **- Analytical and advertising systems:** Google Analytics 4, Google Ads, Meta Ads, TikTok Ads, Bing Ads, Criteo, and Google Search Console accounts.\n* **- E-commerce and CRM systems:** The IdoSell platform, containing sales and product data from all markets and other marketplace platforms.\n* **- Marketplace Data:** Detailed data from Allegro, including information on auction costs and sales generated within them.\n\nIn total, this amounted to nearly **100 different data sources**.\n\n**The business bottleneck was analytical chaos, i.e., manual work:**\n\nThe team spent a huge amount of time manually combining data from various systems just to create simple reports (e.g., a summary of marketing expenses).\n\n\u003Cbr>\n\u003Cdiv style=\"border-radius: 25px; overflow: hidden; width: fit-content; margin: 0 auto;\">\n    \u003Cimg src=\"https://a.storyblok.com/f/296300/1024x718/77dc329b1f/unitrailer_example_mess.webp\" style=\"display: block; width: 100%; height: auto; margin: 0; padding: 0; border: none;\"/>\n\u003C/div>\n\n\n## 💡 The Solution: WitCloud Automated Data Platform\n\nUnitrailer needed to reduce the time required to prepare data for decision-making. To this end, they decided to implement WitCloud as a central system for automatic data integration, processing, and modeling.\n\n1. **Automating 100 sources without coding:** WitCloud automatically connected all 100 data sources. The entire process took place **without writing code**, thanks to ready-made connectors.\n2. **Automatic transformation of chaos into ready-to-use data:** WitCloud not only dumps 800 raw tables into one place, which is BigQuery, but in subsequent steps, it automatically processes the data, unifies it, and builds **lightweight, small, and aggregated** tables (datamarts) so that they meet business needs and are usable in visualizations. This approach also significantly lowers the costs of querying data from the database.\n3. **One Coherent Report:** Everything was made available in one coherent report located in Looker Studio, giving a full picture of the business.\n4. **Infrastructure \"on autopilot\":** The entire process runs fully automatically, 24/7, from data downloading, through error monitoring, to infrastructure maintenance.\n\n![](https://a.storyblok.com/f/296300/1666x707/a357a36d79/multicountry_reporting.png)\n\n\n## Results\n\n####\n\n#### 1\\. Reduction of analytics costs and business decisions in seconds, not days\n\nReports that previously required **hours of manual combination of xls sheets** (e.g., summary of marketing expenses, Google Analytics 4 data, or sales from CRM for all markets) are now executed in a few seconds. Data is always ready \"at hand\" for all markets.\n\n#### 2\\. Full Cross-Market Product Analysis\n\nThe company gained the instant ability to analyze **the entire product offer and sales** (from IdoSell, Allegro, and other systems) in one place. This allows for strategic decisions regarding the assortment in individual markets.\n\n#### 3\\. Team Focused on Growth, Not on \"Putting Out Fires\"\n\nWhen a company stops wasting time asking \"How much was it?\" and starts discussing \"What do we do next?\" – it is a sign that it has moved from chaos to strategy. Specialists and analysts stop being data \"gatekeepers\" and become strategic partners for the business.\n\n#### 4\\. Foundation for AI ready immediately\n\nInstead of heavy tables, **lightweight, optimized, and organized datasets** were created, which are ready to be used by AI models.\n\n## Client Opinion\n\n\n\u003Cdiv style=\"font-family: system-ui, -apple-system, sans-serif; padding: 60px 20px; text-align: center; background: linear-gradient(115deg, #ffffff 50%, #eff6ff 50.1%); color: #111827; width: 900px; max-width: 100%; margin: 30px 0;\">\n \u003Cdiv style=\"display: inline-flex; align-items: center; margin-bottom: 40px; color: #4f46e5; max-width: 300px;\">\n\u003Cimg src=\"https://a.storyblok.com/f/296300/1999x265/5f88a993bc/logo_unitrailer.png\">\n\n  \u003C/div>\n\n  \u003Cp style=\"font-weight: 600; font-size: 22px; color: #111827; line-height: 1.5; max-width: 800px; margin: 0 auto 40px auto;\">\n    “We can't live without this data”\n  \u003C/p>\n\n  \u003Cdiv style=\"font-size: 16px;\">\n    \u003Cspan style=\"font-weight: 700; color: #111827;\">Bartosz Nawrocki\u003C/span>\n    \u003Cspan style=\"color: #9ca3af; margin: 0 8px;\">•\u003C/span>\n    \u003Cspan style=\"color: #6b7280;\">Menadżer e-commerce w Unitrailer\u003C/span>\n  \u003C/div>\n\n\u003C/div>\n\n\n## Summary\n\nThanks to WitCloud, Unitrailer transitioned from a dispersed, expensive, and hard-to-maintain data ecosystem to a modern infrastructure:\n\n* **- fully automated reports available on demand, not on order**\n\n* **- cost-optimized processes**,\n\n* **- data ready for prompting with AI models**\n\nThis is not just ordinary \"reporting\" — it is a **data platform** supporting expansion and rapid business decisions.\n\n\u003Cdiv style=\"\n    background-color: #f9fafb; \n    border-radius: 16px; \n    padding: 32px 0; \n    font-family: system-ui, -apple-system, sans-serif;\n    display: flex; \n    flex-wrap: wrap; \n    align-items: center; \n    justify-content: center;\n    width: 100%;\nmargin-top: 40px;\n\">\n\n  \u003Cdiv style=\"flex: 1; min-width: 150px; text-align: center; border-right: 1px solid #e5e7eb; padding: 10px;\">\n    \u003Cdiv style=\"font-size: 24px; font-weight: 700; color: #111827; margin-bottom: 4px;\">25 \u003C/div>\n    \u003Cdiv style=\"font-size: 14px; font-weight: 500; color: #6b7280;\">European markets\u003C/div>\n  \u003C/div>\n\n  \u003Cdiv style=\"flex: 1; min-width: 150px; text-align: center; border-right: 1px solid #e5e7eb; padding: 10px;\">\n    \u003Cdiv style=\"font-size: 24px; font-weight: 700; color: #111827; margin-bottom: 4px;\">100\u003C/div>\n    \u003Cdiv style=\"font-size: 14px; font-weight: 500; color: #6b7280;\">different data sources\u003C/div>\n  \u003C/div>\n\n  \u003Cdiv style=\"flex: 1; min-width: 150px; text-align: center; border-right: 1px solid #e5e7eb; padding: 10px;\">\n    \u003Cdiv style=\"font-size: 24px; font-weight: 700; color: #111827; margin-bottom: 4px;\">800\u003C/div>\n    \u003Cdiv style=\"font-size: 14px; font-weight: 500; color: #6b7280;\">raw tables\u003C/div>\n  \u003C/div>\n\n  \u003Cdiv style=\"flex: 1; min-width: 150px; text-align: center; padding: 10px;\">\n    \u003Cdiv style=\"font-size: 24px; font-weight: 700; color: #111827; margin-bottom: 4px;\">1\u003C/div>\n    \u003Cdiv style=\"font-size: 14px; font-weight: 500; color: #6b7280;\">automated report\u003C/div>\n  \u003C/div>\n\n\u003C/div>\n\n\n\u003Ca href=\"https://unitrailer.pl/\" target=\"_blank\">We invite you to visit the Unitrailer website\u003C/a>","Case Study Unitrailer x WitCloud","case-study","The business bottleneck was analytical chaos, i.e., manual work:\n\nThe team spent a huge amount of time manually combining data from various systems just to create simple reports (e.g., a summary of marketing expenses).",{"id":914,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":915,"copyright":19,"fieldtype":21,"meta_data":916,"is_external_url":32},190524925491044,"https://a.storyblok.com/f/296300/900x600/aa3fffa6ba/05-unitrailer-case-study.png",{},[918],{"_uid":919,"name":920,"content":921,"component":239},"f34609f1-8fcd-404a-aa30-9063d2f22e22","Meta Og Image","https://a.storyblok.com/f/296300/1200x628/1cc35d5e85/head_en.png",[],"2025-11-25 00:00",[],"case-study-unitrailer-x-witcloud","content/case-studies/case-study-unitrailer-x-witcloud",[],191214038452126,"a0fb85b3-7295-42e0-b7e8-37adf5dfc33d",[],{"name":932,"created_at":933,"published_at":247,"updated_at":934,"id":935,"uuid":936,"content":937,"slug":948,"full_slug":949,"sort_by_date":169,"position":950,"tag_list":951,"is_startpage":32,"parent_id":845,"meta_data":169,"group_id":952,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":953,"default_full_slug":169,"translated_slugs":169},"Google Analytics 4 [GA4] BigQuery - 9 challenges to surprise you in data analysis","2026-06-23T08:28:33.008Z","2026-08-21T07:00:43.184Z",190520168536775,"cbd46d2c-d585-4da6-91ea-754c8fc8b69b",{"_uid":938,"title":932,"content":939,"eyebrow":19,"showTOC":39,"category":219,"readTime":19,"subtitle":940,"component":272,"heroImage":941,"meta_tags":945,"meta_title":932,"heroButtons":946,"updatedDate":839,"bottomBlocks":947},"b6f75232-4b82-49d2-845a-284ebf9d3c5d","## Continuation of a series of articles about Google Analytics 4 [GA4] data in BigQuery [Article series]\n\n\n\nThis article is part of a series of posts about Google Analytics 4 and the export of data to Google BigQuery. It consists of the following components:\n\n\n\n- [#1 Google Analytics 4 BigQuery – why you should use it? \n](https://witbee.com/blog/google-analytics-4-bigquery-why-you-should-use-it)  \n- [#2 Google Analytics 4 BigQuery – 9 challenges that are sure to surprise you when analysing your data](https://witbee.com/blog/google-analytics-4-bigquery-9-challenges-to-surprise-you-in-data-analysis)  (which you are currently reading)\n\n- [#3 Google Analytics 4 BigQuery – traffic sources, sessions, attribution, marketing costs and ready-to-analyse data\n](https://witbee.com/blog/google-analytics-4-bigquery-traffic-sources-sessions-attribution-marketing-costs-and-ready-data-for-analysis)\n\n\n\nIn the previous post of  [Google Analytics 4 BigQuery - why you should use it ?](https://witbee.com/blog/google-analytics-4-bigquery-why-you-should-use-it) we discussed a number of arguments about why it is worthwhile to use the export of Google Analytics 4 data in BigQuery.\nHowever, while interacting with data, we may come across various difficulties that we should be aware of before we spend many hours on taking attempts to overcome them. So we decided to write an informative article about these problems - this is a collection of our experience from projects based on data export from Google Analytics 4. \n\n## Data reported in Google BigQuery will be different than those seen in the Google Analytics 4 panel [Data differs from the panel]\n\nThe first task we handled while working with the export of Google Analytics 4 data in BigQuery was to trace the logic of reports that are available in the interface. In this way, we can learn a lot and understand exactly how the metrics and dimensions are calculated and validate the correctness of our queries.\n\n\n\nHere, the task turned out to be difficult, because according to [Google Analytics 4 documentation](https://support.google.com/analytics/answer/9191807?hl=en) , the data in the panel may differ from those that we will calculate in BigQuery.\nEven if the data in the Google Analytics 4 panel shows that they are not sampled, the number of sessions is still an estimate based on the number of unique session identifiers. Read more about this topic in: [Unique count approximation in Google Analytics](https://developers.google.com/analytics/blog/2022/hll)\n\n\n\n![How Google Analytics 4 Calculate Sessions](https://a.storyblok.com/f/46798/671x92/65aa7fa106/google-analytics-4-bigquery-number-of-sessions.png)\n\n\n\nIn BigQuery we most often do not use the estimation function, and hence we can spot differences, for instance in the number of sessions compared to the results given in standard and exploratory reports or in Looker Studio.\n\n\n\nHere are the recommendations from Google:\n\n\n\n- If we wish to get more accurate results based on raw data, we should use Google BigQuery to export data\n- If we need to quickly obtain results taking into account the margin of error, it is best to check them in the reports in the panel  \n\n\n\n![Google Analytics 4 BigQuery Data Precision](https://a.storyblok.com/f/46798/904x264/f30627a14d/google-analytics-4-bigquery-data-precision.png)\n\n## Information about campaign sources in BigQuery we only have the first source of user acquisition [Only first acquisition source]\n\nLittle doubt, a report showing the source/medium was the most popular report in Google Analytics Universal. Such a report was also reproduced in Google Analytics 4. It is available in the default Acquisition -> Traffic Acquisition section.\n\n\n\n\n![Google Analytics 4 - Source/Medium Report](https://a.storyblok.com/f/46798/1780x780/a49616841d/google-analytics-4-source-medium-report.png)\n\n\n\nThis report uses a dimension called “Session source/medium”, which carries information about the source of the session. \n\n\n\nWhile viewing data exported to Google BigQuery for GA4, we can notice fields called traffic_source.source, traffic_source.medium, traffic_source.name (campaign name), which are very often misused to reproduce the above report. \n\n\n\n![Google Analytics 4 BigQuery traffic_source field example](https://a.storyblok.com/f/46798/752x63/4647884f9c/google-analytics-4-bigquery-traffic-source-example.png)\n\n\n\nThe problem, however, is that these are fields with the information about the things that occurred in the first campaign since acquiring this user, not about the source that occurred in a relevant session, as we can view it in the reports and the \"Session source/medium\" dimension.\n\n\n\n![Google Analytics 4 BigQuery traffic_source field description](https://a.storyblok.com/f/46798/986x327/0de56d0a96/google-analytics-4-bigquery-traffic-source-field-desc.png)\n\n\n\nBy using these fields in the table, we will thus achieve a different image than for the “Session source / medium” dimension in the panel.\n\n\n\n![Google Analytics 4 BigQuery traffic_source field path example](https://a.storyblok.com/f/46798/790x164/1ae9c65264/google-analytics-4-bigquery-traffic-source-field-behaviour.png)\n\n\n\n\u003Cspan style='color:red'>UPDATE - the following parameters are currently available at the event parameter level and in the columns in the collected_traffic_source group. However, please remember that these are not data calculated according to the dimension logic, i.e. Session source/medium/campaign. These are just parameters that occur with the event. \u003C/span>\n\n\n\nTo reproduce this dimension, we need to retrieve the campaign parameters from the events, and then calculate these data according to the logic described in the documentation for all sessions: [[GA4] Scopes of traffic-source dimensions - Analytics Help ](https://support.google.com/analytics/answer/11080067?hl=en&ref_topic=11151952#zippy=%2Cin-this-article)\n\n\n\n![Google Analytics 4 BigQuery Campaign Parameters ](https://a.storyblok.com/f/46798/913x374/f97bc5ec82/google-analytics-4-bigquery-campaign-info.png)\n\n\n\n## Google Analytics 4 [GA4] performs deduplication on users between devices* [Cross-device deduplication]\n\n\n\n The data may be connected between platforms/devices, this being a major revolution in Google Analytics 4 compared to Google Analytics Universal. By implementing Google Analytics 4 on our website and in the mobile application, we are able to obtain one transparent source of analysis for these platforms.\n\n\n\nBy default, Google Analytics generates a “user_pseudo_id” for each device/browser, that is a new cookie (website) or identifier (mobile application). Based on this identifier, the calculations necessary to present all metrics and dimensions in the panel are performed.\nOne user can visit our website or app through different devices. If you visit us on the website on your computer, then on the website on your mobile device, and finally in the mobile application, you will be identified as 3 different users. \n\n\n\nIf we enable [Google Signals](https://support.google.com/analytics/answer/9445345?hl=en&ref_topic=9303474#zippy=%2Cin-this-article) or implement a [User ID function](https://support.google.com/analytics/answer/9213390?hl=en) (by way of illustration a custom identifier from a database when logging in or making a purchase)Google Analytics will perform a deduplication on your data (as far as possible in Google Signals), which will affect the number of users and the attribution of marketing channels. We may view data at different levels (whether deduplicated or not) depending on our identity settings in Google Analytics 4 - more on this in: [[GA4] Reporting Identity - Analytics - Help ](https://support.google.com/analytics/answer/10976610?hl=en)\n\n\n\n![Google Analytics 4 User Identity](https://a.storyblok.com/f/46798/921x418/9f147ef977/google-analytics-4-user-deduplication-before-after.png)\n\n\n\nHowever, it is worth remembering that Google Signals data is data that Google can connect with users who have logged into their Google accounts and have ad personalization enabled. By linking this data to logged-in users, the reports may present a number of users more accurately. In view of the users' privacy policy, Google cannot share this data with us, which also affects the discrepancies in data between the interface and the reports in Google BigQuery. Read more about this topic in: [[GA4] Activate Google signals for Google Analytics 4 properties](https://support.google.com/analytics/answer/9445345?hl=en&ref_topic=9303474#zippy=%2Cin-this-article)\n\n\n\n![Google Analytics 4 BigQuery Show More Users ](https://a.storyblok.com/f/46798/981x169/ee1df82f28/google-analytics-4-bigquery-export-show-more-users.png)\n\n\n\nTake note - if we have implemented the user_id parameter on our website or application, we can seek to recreate the deduplication of users in BigQuery - only in this way will we achieve the correct number of users and the correct attribution of traffic sources to the session in accordance with the “Cross-Device” logic. \n\n\n\n[Complex Deduplication in BigQuery | by Benjamin Campbell ](https://benjaminsky.medium.com/complex-deduplication-in-bigquery-a3c5e78dec2b) , expands the issue of the deduplication problem and a potential solution.\n## One session ID (ga_session_id) can be assigned to 2 different users [One session ID, 2 users]\n\n\n\nTime stamps are used intensively in programming.\nThis data determines the moment when a specific event occurred.\nThe value of this stamp is defined on the basis of \"Unix Time\", a system of time representation measuring the number of seconds since the early 1970.\n\n\n\nFor example, Timestamp 1672481243 represents the date and time: 2022-12-31 10:07:23\nThat's 1672481243 seconds since the early 1970s.\n\n\n\nWhen browsing Google Analytics 4 data in BigQuery, we also have a lot of contact with time stamps, for instance the field event_timestamp contains the number of microseconds since 1970.\n\n\n\nWhen we look at the identifier named “ga_session_id”, we see that this is the approximate time of the first event starting the sessions.\n\n\n\n![Google Analytics 4 GA Session ID Duplication](https://a.storyblok.com/f/46798/739x124/c1db345336/google-analytics-4-bigquery-ga_session_id.png)\n\n\n\nWhereas several users can start sessions at the same time (exactly the same second), the parameter per se, that is ga_session_id, does not give a unique session identifier. To this end, we need to combine user_pseudo_id or user ID and ga_session_id to obtain a unique session ID for our calculations. We can do this with the CONCAT function.\n\u003Ccode >\nSELECT \n&nbsp;&nbsp;&nbsp;CONCAT(user_pseudo_id, ga_session_id) as session_id\nFROM\n&nbsp;&nbsp;&nbsp;your_google_analytics_4_events\n\u003C/code>\n\n\n\n\nWe will then develop a unique string, one which will communicate the identifier of a session:\n\n\n\n\u003Cp style='text-align:center'>\u003Cspan style='color:green'>1020668977.1672354709\u003C/span>\u003Cspan style='color:red'>1672354709\u003C/span>\u003Cp>\n\n\n\nOf note - if we look at the value of user_pseudo_id and see what it is composed of, we will also notice a timestamp communicating the date of creation of the user in question.\n\n\n\n\u003Cp style='text-align:center'>\n1020668977.\u003Cspan style='color:red'>1672354709\u003C/span> = {{random number}} + “.” + {{user created timestamp}}\n\u003C/p>\n\n## One session ID (ga_session_id) can occur on 2 different days [One session ID, 2 days]\nGoogle Analytics Universal created a new session each time:\n\n- there has been no interaction for more than 30 minutes (based on default settings)\n- when campaign parameters changed ( that is utm, gclid, referral)\n- **when the session took place between one and the other day**\n\n\n\nBy way of illustration, if a user started the session at 23:58, and the purchase was made without walking away from the computer at 00:05 the following day, Google Analytics Universal created 2 different session IDs in this case - the one lasted from 23:58 to 00:00 and the other from 00:00 to 00:05 (assuming that the user closed the browser as soon as he had made his purchase).\n\n\n\nFor Google Analytics 4, the session ID will remain the same between one and two days. Accordingly, if we want to calculate the exact metrics for a relevant session, we have to take into account the data from the previous day, be it to check the entry/destination page for a specific session. This affects the size of the processed data and the need to apply additional modifications in SQL queries.\n\n## URL (page_location) can be up to 1000 characters long [URL up to 1000 characters]\n\n\n\n\u003Cspan style='color:red'>UPDATE - Character limit restrictions for page_location parameter changed from 420 to 1000 characters\u003C/span>\n\n\n\nIf you have long urls, ones using many parameters, the analysis of this data in BigQuery may surprise you. During one of the projects, the client asked us to analyze the filters selected by the user based on the parameters in the url addresses. We sat down to the task with optimism, writing regular expressions that allow us to extract parameters from url addresses.\nFollowing a brief analysis, we noticed that parts of the parameters are missing or often cut out in url addresses. So we decided to check the maximum length of url addresses and it turned out that a large part is always 420 characters - all these addresses had cut off parameters due to length.\n\n\n\n\n![Google Analytics 4 page_location max 420 characters](https://a.storyblok.com/f/46798/1020x110/421b49949a/google-analytics-4-page-location-max-420-characters.png)\n\n\n\nOur recommendation: if we are aware that the relevant url parameters will be very important for us during data analysis,  we should pass them as event parameters. Take note, however, that page_location is a system parameter that can be \u003Cs>420\u003C/s> 1000 characters long. For custom parameters, the character limit is 100. Read more about the limits: [[GA4] Event collection limits - Analytics Help](https://support.google.com/analytics/answer/9267744?hl=en)\n\n## Data without analytical consent contain no information about user_pseudo_id and ga_session_id [No-consent data gaps]\n\n\n\nIf we have correctly implemented the Google consent mode function, the data may reach Google Analytics in various forms. If you do not agree to be identified by a cookie, your events will be submitted to Google BigQuery, but the parameters, that is user_pseudo_id and session_id, will be null. Hence, if we plan to use this data for combining or other calculations, it is worthwhile to keep it in mind, because many data can be grouped into one non-existent user or into one non-existent session.\n\n\n\n![Google Analytics 4 BigQuery Consent Mode Data](https://a.storyblok.com/f/46798/861x675/3ffd4a1a5a/google-analytics-4-bigquery-consent-mode.png)\n\n\n\n## When our transactions go to Google Analytics in different currencies, we need to have them converted [Multi-currency conversion]\n\n\n\nIf users can make purchases in different currencies on our website or in the application, we must ensure that the value is converted to the currency that has been set in the settings of the respective service.\nIn the case of submitting the “currency” event parameter in the implementation, Google Analytics 4 provides us with additional fields in which the data converted by default to USD are located. Sadly, we cannot define the currency in which we would like to drop data to Google BigQuery. Respectively, if we have a selected currency in our service settings, for instance PLN, in which case we will have to download the day-specific rate  to Google BigQuery and convert this information in order to be able to map what we see in the panel.\n\n\n![Google Analytics 4 BigQuery - Currency Conversion Value](https://a.storyblok.com/f/46798/1049x235/69163b248f/google-analytics-4-currency-conversion-issue.png)\n\n## Lack of complete information about full Google Ads data and vulnerability to campaign name changes [Google Ads data limits]\n\n\n\nIn exporting Google Analytics Universal data to BigQuery, we were accustomed to comprehensive information about Google Ads campaigns.\n\n\n\n![Google Analytics 4 BigQuery Missing Google Ads Data](https://a.storyblok.com/f/46798/718x575/99b5b1dfe4/google-analytics-4-bigquery-missing-google-ads-data.png)\n\n\n\nAs we mentioned earlier, for Google BigQuery data, we have only 3 fields calculated, that is traffic_source.source, traffic_source.medium and traffic_source.name, and these are fields that talk about acquiring a user, not about the sources of a specific session.\nIf you want to complement your Google Analytics 4 data with additional information from Google Ads, including your advertising account identifier, campaign identifier, campaign type, we need to make sure that Google Ads tables are included in Google BigQuery, and only in the subsequent step do we link them with additional SQL instructions. This process is quite capable of expanding the logic of queries, and so this constitutes another difficulty that we must be ready for while exploring data.\n\n\n\n## Summary\n\nGoogle Analytics 4 and the ability to export data to Google BigQuery is a great solution for all companies that wish to make efficient decisions based on data. However, if we want to fully draw from their potential and act in accordance with the state-of-the-art practices related to measuring traffic between devices, we must spend a lot of time processing this data (user deduplication, attribution of traffic sources, combining Google Ads data). We also need to be prepared for data discrepancies between the Google Analytics 4 panel and what we get as a result in Google BigQUery.\n\n\n\nLuckily, most of the problems related to data processing can be automated - we discussed our approach to this issue in our next article  [“Google Analytics 4 BigQuery - traffic sources, sessions, attribution, marketing costs and ready data for analysis”](https://witbee.com/blog/google-analytics-4-bigquery-traffic-sources-sessions-attribution-marketing-costs-and-ready-data-for-analysis). \n\n\n","When interacting with Google Analytics 4 [GA4] data in BigQuery, we managed to encounter various difficulties that are worth knowing about in advance, before many hours have passed on a detective attempt to overcome them.",{"id":942,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":943,"copyright":19,"fieldtype":21,"meta_data":944,"is_external_url":32},190527407499343,"https://a.storyblok.com/f/296300/900x600/07a6ad8a1c/11-ga4-bigquery-9-challenges.png",{},[],[],[],"google-analytics-4-bigquery-9-challenges-to-surprise-you-in-data-analysis","content/knowledge/google-analytics-4-bigquery-9-challenges-to-surprise-you-in-data-analysis",10,[],"4f75bf07-79d3-4f9f-8ceb-37bdb2ff7e9c",[],{"name":955,"created_at":956,"published_at":247,"updated_at":957,"id":958,"uuid":959,"content":960,"slug":996,"full_slug":997,"sort_by_date":169,"position":950,"tag_list":998,"is_startpage":32,"parent_id":804,"meta_data":169,"group_id":999,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":1000,"default_full_slug":169,"translated_slugs":169},"Kontroluj cykl życia klienta — LTV, CAC, Atrybucja i AI","2026-06-22T18:50:43.201Z","2026-08-21T07:00:42.784Z",190319178599487,"e90ff14a-2c6f-4567-ade6-ee3a8046d10d",{"_uid":961,"title":962,"content":963,"eyebrow":736,"showTOC":39,"category":737,"readTime":19,"subtitle":964,"component":272,"heroImage":965,"meta_tags":969,"meta_title":970,"heroButtons":971,"updatedDate":974,"bottomBlocks":975},"webinar-klient-content-page","Control the Customer Lifecycle: LTV, CAC, Attribution & AI","## Who really is your customer? [Who is your customer?]\n\nImagine you just got an order from Stefan. You made money — great. But...\n\n- Is this his first order, or maybe his fifth? Is he a one-time buyer or your loyal “Golden Customer”?\n- What’s his history? Does he buy regularly, or did you just win him back after 2 years of absence?\n- Where did Stefan come from, and exactly how much did it cost you to acquire this specific customer?\n- And most importantly: What do you need to do now to convince Stefan to buy again?\n\nStop guessing. During this webinar, we walk you through the business analysis of your customers and show you concrete strategies you can use right away.\n\n## The 4-step customer analysis framework [Framework]\n\n### 1. Know your customer structure\n\n![Customer Structure](https://a.storyblok.com/f/296300/1253x501/b895ff3318/diagram-klient-1-1.png)\n\nDiscover the real structure of your customer base and find out which groups generate the highest lifetime value (LTV) for your business. Identify precisely who your customers are — from one-time buyers to “golden” customers — so you know where to focus your resources.\n\n### 2. See your customer flow\n\n![Customer Flow](https://a.storyblok.com/f/296300/1253x501/e18dc5fafe/diagram-klient-2.png)\n\nUnderstand the dynamics of your base and see how your marketing decisions affect customer migration between segments. Check whether your actions effectively turn one-time buyers into loyal partners.\n\n### 3. Identify actions that impact your customers\n\n![Attribution & CRM](https://a.storyblok.com/f/296300/1253x501/32c97ec017/diagram-klient-3.png)\n\nConnect attribution data (e.g. from Google Ads) with your CRM to discover which channels attract the most valuable users. Find out not just where traffic comes from, but whether your campaigns acquire “golden” and loyal customers — or just one-time buyers.\n\n### 4. Use AI to build your strategy\n\n![AI Strategy](https://a.storyblok.com/f/296300/1253x501/0a58df94e7/diagram-klient-4.png)\n\nTransform raw data into a concrete action plan using AI to build strategies for individual customer groups. Get ready-made recommendations to precisely target the right segments with the best personalized offer.\n\n## What you’ll learn [Agenda]\n\nThis webinar is hands-on. We’ll show you concrete reports, analyses, and marketing strategies you can apply in your e-commerce store right away.\n\n1. **User vs Customer** — The fundamental difference between fleeting “sessions” in Google Analytics and permanent records in your CRM. Why focusing on customers is the only path to stable profit.\n2. **RFM 2.0 Segmentation** — Modern methodology that goes beyond Excel. Automatically group customers by recency, frequency, and monetary value.\n3. **Cohort analysis** — Stop looking at “average sales.” Cohort analysis shows you in black and white whether your customer quality is growing or declining month over month.\n4. **True LTV (Lifetime Value)** — Understand why CAC can exceed the first basket value — as long as you can calculate and predict what a customer will spend over their lifetime.\n5. **Campaign goal optimization** — Knowing what type of customers your campaigns acquire, align your marketing actions more precisely with your business goals.\n6. **Analytics without an IT department** — Advanced segmentation and data merging without an army of developers — a system you can implement in just a few clicks.\n\n## Is this webinar for you? [For whom?]\n\n**✅ Yes, this is for you if:**\n- You’re an E-commerce Director, CMO, or Owner tired of making gut-feel decisions based on incomplete GA4 data\n- You’re a Head of Analytics or Data Team Lead who wants access to reliable data on customer behavior\n- You want to know the true health of your business and continuously analyze your customer structure\n- You want to plan marketing actions precisely and reach real customers — not just buy clicks\n- You want to know the true LTV of your customers and use that insight in your growth strategy\n\n**❌ Not for you if:**\n- You’re just starting out in e-commerce and are still acquiring your first customers — at this point you don’t yet have enough data or budget to use the proposed solutions\n\n## About the speaker [Speaker]\n\n**Krzysiek Modrzewski** — Poland’s leading expert in analytics and marketing strategy with over 15 years of experience. Co-founder of Witbee, Marketing Masters, and the Umiejętności Jutra project. Host of the “Od Danych Do Zysku” (From Data to Profit) podcast.\n\n- **Practitioner, not theorist:** Helps companies transform data chaos into real profits. Co-created educational projects that attracted over 100,000 participants.\n- **Knows your pain:** Has personally gone from “decision paralysis” to full automation.\n- **Has a ready solution:** Shares reports and strategies you can use in your company right away.\n\n## You have a choice: Chaos or Control [Your choice]\n\nYou can keep basing your decisions on incomplete and inaccurate Google Analytics 4 data or the limited analyses your CRM systems offer.\n\n**Or** you can invest 60 minutes to see:\n\n- ✅ **How to use customer insights to optimize your marketing activities**\n- ✅ **How to analyze true LTV and CAC** in your e-commerce business\n- ✅ **How your customer segments shift over time**\n\nUse your First Party data to gain a competitive edge — now.","Free webinar for e-commerce managers, directors, and owners.\n\u003Cbr>\u003Cb>Customer analysis: LTV, CAC, RFM, cohorts and AI in one framework.\u003C/b>\nWatch the recording on demand.\u003Cbr>\n\u003Cb>For e-commerce managers, directors, owners, and C-level executives\u003C/b>",{"id":966,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":967,"copyright":19,"fieldtype":21,"meta_data":968,"is_external_url":32},190524925515622,"https://a.storyblok.com/f/296300/900x600/5afe69a615/07-customer-lifecycle.png",{},[],"Scale E-commerce with LTV, CAC & AI | Customer Lifecycle Webinar",[972],{"_uid":973,"href":748,"size":500,"text":868,"target":29,"variant":31,"component":33,"showArrow":39},"klient-cta-1","2026-01-22 00:00",[976],{"_uid":977,"steps":978,"header":889,"systems":992,"anchorId":787,"component":789,"buttonText":891,"description":993,"progressStyle":30,"privacyPolicyLink":994,"privacyPolicyText":796,"getResponseCampaignId":995,"privacyPolicyLinkText":799},"e15541d9-c912-4062-b7bf-85f872dd995d",[979],{"_uid":980,"title":759,"fields":981,"component":778},"31c884b4-4fc2-459d-9e37-8634bdefe7d0",[982,984,986,988,990],{"_uid":983,"name":763,"type":521,"label":764,"required":39,"component":765,"fullWidth":32},"bfdb7920-7d8d-40df-80bf-f5f85b9d8552",{"_uid":985,"name":768,"type":521,"label":769,"required":39,"component":765,"fullWidth":32},"685cb5d2-eef2-4b8e-9d93-53f0cd4c800e",{"_uid":987,"name":772,"type":521,"label":773,"required":39,"component":765,"fullWidth":39},"821d6623-6b0a-4b0c-a207-08e239f210fa",{"_uid":989,"name":885,"type":521,"label":886,"required":32,"component":765,"fullWidth":39},"dacd9055-6cb7-40aa-8cb2-3742ef9166ce",{"_uid":991,"name":776,"type":776,"label":777,"required":39,"component":765,"fullWidth":39,"businessOnly":39},"fd7bfd93-abf2-4458-a750-fec9a015542d",[782,783,784],"Fill in the form and we’ll send you the recording link by email. Watch at any time that suits you.\n\u003Cbr>\u003Cbr>\n\u003Cb>Available on demand — watch the full 60-minute session",{"id":793,"url":19,"linktype":794,"fieldtype":46,"cached_url":795},"iEDsN","webinar-o-analizie-klienta","content/webinars/webinar-o-analizie-klienta",[],"e15a3be6-23e3-468e-8b0d-b5f014640202",[],{"name":1002,"created_at":1003,"published_at":247,"updated_at":1004,"id":1005,"uuid":1006,"content":1007,"slug":1018,"full_slug":1019,"sort_by_date":169,"position":1020,"tag_list":1021,"is_startpage":32,"parent_id":845,"meta_data":169,"group_id":1022,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":1023,"default_full_slug":169,"translated_slugs":169},"Google Analytics 4 [GA4] BigQuery - why you should use it?","2026-06-23T08:28:24.874Z","2026-08-21T07:00:43.097Z",190520135199428,"286c6655-c086-4815-b927-99038aa3e83f",{"_uid":1008,"title":1002,"content":1009,"eyebrow":19,"showTOC":39,"category":219,"readTime":19,"subtitle":1010,"component":272,"heroImage":1011,"meta_tags":1015,"meta_title":1002,"heroButtons":1016,"updatedDate":839,"bottomBlocks":1017},"dc82dc8e-104a-488d-9f00-4dc382a4b37c","## A series of articles on Google Analytics 4 [GA4] data in BigQuery [Article series]\n\n\n\nThis article is part of a series of posts about Google Analytics 4 and the export of data to\nGoogle BigQuery. It consists of the following components:\n\n\n\n- [#1 Google Analytics 4 BigQuery – why you should use it?](https://witbee.com/blog/google-analytics-4-bigquery-why-you-should-use-it )   (which you are currently reading)\n- [#2 Google Analytics 4 BigQuery – 9 challenges that are sure to surprise you when analysing your data](https://witbee.com/blog/google-analytics-4-bigquery-9-challenges-to-surprise-you-in-data-analysis) \n- [#3 Google Analytics 4 BigQuery – traffic sources, sessions, attribution, marketing costs and ready-to-analyse data](https://witbee.com/blog/google-analytics-4-bigquery-traffic-sources-sessions-attribution-marketing-costs-and-ready-data-for-analysis)\n\n\n\n## Getting started – Google Analytics 4 and Google BigQuery [Getting started]\n\n\n\n### Why is the Google Analytics interface not enough?\nThe moment you implement Google Analytics 4 on a website or app, you start sending\ninformation about user events to Google's database. Based on this data, various types of\nreports are displayed in the Google Analytics 4 interface. \n\n\n\nBrowsing data in the Google Analytics 4 interface can be an enjoyable task.\nSometimes, however, you may encounter various types of constraints while running an\nanalysis, e.g.:\n\n\n\n- the data is sampled, which means that the results are presented on the basis of a\n  sample of data rather than all the information collected\n- some metrics and dimensions cannot be combined as the system does not allow it\n- there is too much data as a result of which many dimensions, e.g. URLs or product names, are suddenly hidden under the name “(other)”\n\n\n\nWe often want to pull data from Google Analytics out of the system and perform additional\ntasks, e.g.:\n\n\n\n- build a dashboard containing Google Analytics data and all marketing costs so as to\n  be able to calculate ROAS or ERS for individual channels\n- combine Google Analytics data with CRM data, e.g. order status information\n- measure marketing campaign attribution using data that includes product margins\n\n\n\nThis is also when we face various limitations, e.g.:\n\n\n\n- we are surprised by the limits of exported rows from Google Analytics and the\n  number of possible API queries\n- we cannot extract just some of the information at a certain level, e.g. user ID or\n  transaction, only aggregated calculated values that we cannot modify in any way\n\n\n\n### Google Analytics 4 [GA4] BigQuery Export\n\n\n\nWe could list many more examples and limitations for different projects. In response to all\nthe above problems and challenges, Google has released a service for exporting raw data\nfrom Google Analytics 4 to BigQuery (we will explain the choice of this tool in particular later in the post), i.e. data that the former uses to prepare all reports in the panel. They contain very detailed information about each event sent by the user with all the attributes, i.e.: device ID, the exact time of the event, event name and its parameters, geolocation information and all data collected through the e-commerce module.\n\n\n\n![Google Analytics 4 BigQuery Events](https://a.storyblok.com/f/46798/901x472/6713400cd2/google-analytics-4-bigquery-export-table.png)\n\n\n\nThe idea is simple – if you want to keep the data we collect for you for longer and use it for your analyses and business purposes, you now have the opportunity to do so.\n\n\n\n### Not only large but also small and medium-sized entrepreneurs have a chance to take action!\n\nIn the past, when using the Google Analytics Universal tool, only the largest players could\nafford to export raw data, namely companies that could afford to pay a minimum of tens of thousands of dollars annually for the Google Analytics 360 service (premium version). At\npresent, this option is available free of charge to all companies using Google Analytics 4.\nThis is an opportunity that can be tapped into not only by large companies and corporations but also by small and medium-sized entrepreneurs who want to use Google Analytics 4 data to make better business decisions.\n\n### Why is Google Analytics 4 data exported to Google BigQuery and not to a spreadsheet or Excel?\n\n\n\n#### Structure of transmitted events\nThe data table diagram itself contains over 100 columns featuring diverse values, displayed\nin various structures. Events often contain a lot of additional information such as several\nparameters or a couple of purchased products. Browsing this type of data in spreadsheets\nbefore making an appropriate selection would be difficult.\n\n#### Data size\nFor the purposes of this article, we checked a small online store, visited on a given day by\n2,200 users – such a store generated 50 MB of data in a single day. Assuming that we\nwould like to analyse all the data of this store, e.g. from an entire year, the file with the table would have to weigh ca. 18 GB – no spreadsheet can easily accommodate a file this size, not to mention performing additional operations such as calculations, sorting or filtering.\nFor reference, large companies can collect from several dozen to even several hundred GB\nof information in one day in Google Analytics. Special tools had to be developed to store\nsuch large datasets and analyse them.\n\n#### Google BigQuery – a modern data warehouse in the cloud\n\nGoogle, whose mission is to \"organise the world's information and make it universally\naccessible and useful,\" needed to analyse very large datasets from all its services, i.e.\nGoogle Search, YouTube, Google Maps and others. To meet that end, a technology called\nGoogle BigQuery was created, which has the capacity to store and analyse data of\n\nenormous size. Google BigQuery is commonly referred to as \"a petabyte-scale data\nwarehouse\".\n\n\n\n\u003Cp style='text-align:center'>1 PETABYTE = 1,000 TERABYTES = 1 MLN GB\u003C/p>\nThe solution worked well for internal analysis at Google, which is why in 2017 Google\nBigQuery was made available as a product for storing and analysing datasets on the\ngrowing Google Cloud platform.\n\n\n\nHaving two products, i.e. Google Analytics and Google BigQuery, and customers of different scales, Google decided to integrate the two. This made it possible to start automatic export of Google Analytics data to Google BigQuery with just a few clicks. As previously mentioned, this service was available in Google Analytics Universal only to premium customers. Now anyone who has Google Analytics can perform such integration by going into the administrative settings. The details are covered in the documentation at this link: [Configuring Google Analytics 4 BigQuery Export.](https://support.google.com/analytics/answer/9823238?hl=en&ref_topic=9359001#zippy=%2Cin-this-article)\n\n\n\n\u003Cdiv style=\"text-align:center\">\n\u003Cimg src=\"https://a.storyblok.com/f/46798/604x560/4ffbae8fcf/google-analytics-4-bigquery-export-configuration.png\">\n\u003C/div>\n\n\n\n#### Google Analytics 4 [GA4] - exploring data in BigQuery\n\nAfter exporting the data, it's time to mine it in the Google BigQuery interface.\nThe Google BigQuery interface is quite simple and intuitive. On the left is a list of our datasets and tables available for analysis. The remaining and largest part of the interface is taken up by the field where you need to write and run an SQL query.\n\n\n\n\n![Img](https://a.storyblok.com/f/46798/1210x702/cde5023e6b/google-analytics-4-bigquery-export-exploration.png)\n\n\n\nThe thing is, in order to analyse data in Google BigQuery, you need to learn the database\nSQL (Structured Query Language) as Google BigQuery currently supports neither \nEnglish :).\n\n![Google Analytics 4 SQL](https://a.storyblok.com/f/46798/940x788/9dcc1a7d6f/ga4_gif_en.gif)\nIn short, SQL is a query language used to manage a database. Among other things, it allows you to write, read, modify and delete data in tables. When writing a query, we use various commands and instructions, i.e. SELECT, FROM, WHERE, GROUP BY, ORDER BY.\n\n\n\n![Google Analytics 4 BigQuery - Example of SQL Query](https://a.storyblok.com/f/46798/903x567/58db85b030/google-analytics-4-example-of-sql-query-en.png)\n\n\n\nAfter launching the query, we receive feedback in the form of a table, which we can then\nsave or export to other tools, e.g. Looker Studio, Google Sheets or Excel via a CSV file.\nBelow is an example query yielding the TOP 10 products added to the cart based on data\nfrom Google Analytics 4.\n\n\n\n![Img](https://a.storyblok.com/f/46798/1356x716/23ebcf7137/google-analytics-4-bigquery-example-query.png)\n\n\n\nIf you plan to export via Google Analytics 4 to BigQuery, it is worth embarking on your\nlearning adventure with SQL, where the entry barrier is much lower than when delving into\nthe world of programming.\n\n\n\nBelow is a handful of useful resources on this topic:\n\n\n\n- [w3schools - SQL Tutorial ](https://www.w3schools.com/sql/)  \n- [Examples of basic SQL queries regarding Google Analytics 4 data](https://developers.google.com/analytics/bigquery/basic-queries)\n- [The book Google BigQuery: The Definitive Guide: Data Warehousing, Analytics, and Machine Learning at Scale](https://www.amazon.pl/Google-BigQuery-Definitive-Warehousing-Analytics/dp/1492044466/ref=asc_df_1492044466/?tag=plshogostdde-21&linkCode=df0&hvadid=504212245098&hvpos=&hvnetw=g&hvrand=1543218266178473463&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=20859&hvtargid=pla-864415395724&psc=1)\n- [Simo Ahava - #BIGQUERYTIPS: QUERY GUIDE TO GOOGLE ANALYTICS: APP + WEB](https://www.simoahava.com/analytics/bigquery-query-guide-google-analytics-app-web/)\n- [Google BigQuery documentation](https://cloud.google.com/bigquery/docs/reference/standard-sql/introduction#sql)\n\n\n\n## A few reasons why you should get started with Google Analytics 4 export in BigQuery [Why use it]\n\nNow that we've covered the basics of exporting data to Google Analytics 4, it's time to learn about some important reasons that should prompt any company to start performing their analytics in Google BigQuery.\n\n\n\n### If you don't enable data export to Google BigQuery, you will lose your historical data.\n\nIn the case of Google Analytics Universal, you had the option to set automatic data deletion after 14, 26, 38 and 50 months. You could also opt out, which meant that data for analysis in Google Analytics was available from as long as 50 months back.\n\n\n\nGoogle Analytics Universal – data retention settings\n\n![Google Analtyics 4 BigQuery Data Retention](https://a.storyblok.com/f/46798/894x350/b1555a6489/google-analytics-4-bigquery-export-data-retention.png)\n\nIn Google Analytics 4, the default retention time of your data is set to 2 months – if you have this option left unaltered, it is a good idea to change it by going to Administration -> Service Settings -> Data Retention. In the free version, you can extend the range to a maximum of 14 months. In the paid version of Google Analytics 4 Premium, it is possible to extend retention to 26, 38 and 50 months, however, the option to keep data indefinitely is not available.\n\n\n\nGoogle Analytics 4 [GA4]– data retention settings\n\n![Img](https://a.storyblok.com/f/46798/894x417/ad34084be4/google-analytics-4-bigquery-export-data-retention-settings.png)\n\n\n\nData in BigQuery can be stored indefinitely – the catch is that data in BigQuery appears only from the moment of its configuration, so if you want to access historical data, you should enable data export to Google BigQuery as soon as possible.\n\n\n\n### Google Analytics 4 data visualisations in Looker Studio – in BigQuery there are no API limits\n\nA popular solution for data visualisation outside of the Google Analytics 4 panel is Looker Studio, formerly known as Google Data Studio. Google Analytics 4 is programmatically integrated with this tool via API (Application Programming Interface), which allows you to quickly and easily create your own visualisations in the form of tables and charts.\nIn November 2022, many companies that had analytical dashboards in Looker Studio, instead of tables and charts, saw a message informing them that the previously mentioned API had exceeded its data download limits.\nAnd this is what the reports looked like:\n\n \n\n![Google Analytics 4 Looker Studio Limits Error](https://a.storyblok.com/f/46798/1205x784/8f7d251957/google-analytics-4-looker-studio-limits-error.png)\n\n\n\nAn official announcement on this matter appeared in the Looker Studio documentation, which referred to the imposed limits in the Google Analytics Data API.\nA link to the published statement can be found [here.](https://support.google.com/looker-studio/answer/11521624?hl=en#nov-10-2022).\n\n\n\n![Google Analytics 4 Looker Studio Data Limits](https://a.storyblok.com/f/46798/1046x408/ab1b2cd337/google-analytics-4-looker-studio-release-notes.png)\n\n \n\nGoogle even introduced a tool to monitor the number of queries from this connector so as to better estimate the extent to which the limits of data downloaded by your dashboards are exceeded.\nIf such limits are exceeded, one of the recommended options is to reduce the number of visualisations as well as access to a report in the organisation or to export data from Google Analytics 4 to Google BigQuery.\n\n![Google Analytics 4 Looker Studio Data Limits Steps To Resolve](https://a.storyblok.com/f/46798/772x437/4a54ca47ea/google-analytics-4-looker-studio-data-limits-resolve.png)\n\n\n\nWhen you are connected via the Google BigQuery connector, queries are sent to Google BigQuery and not to the Google Analytics Data API, thanks to which you bypass query limits for historical data. Data visualisation based on tables from Google BigQuery is therefore another benefit here if you want to have constant access to reporting without fretting over any limits.\n\n\n\n### Interface data sampling – a piece of cake for BigQuery\n\nThe exploration section of the Google Analytics 4 panel features many options for visualising and reporting the collected data. Some of them, depending on the selected metrics and dimensions, require hefty calculations, which may ultimately result in data sampling. When a larger number of events need to be processed within a given query, Google Analytics will use a sample of available data. In the case of the free version of Google Analytics, the limit is 10 million events, for the paid premium version it stands at 1 billion events.\n\n\n\nIn the screenshot below, you can see a recommended cohort report running in the template gallery. Without modifying any parameters, an exclamation mark appears, informing us about a large sampling of data – this report was prepared on the basis of 6.91% of all information available to Google Analytics, therefore it is most likely highly inaccurate.\nReferring to this example when analysing other data, you may encounter many such cases that can significantly hinder decision-making.\n\n \n\n![Google Analytics 4 Reports Sampling](https://a.storyblok.com/f/46798/1283x577/c2f853202d/google-analytics-4-report-sampling.png)\n\n\n\nWhen preparing reports in Google BigQuery, you have access to all the collected data and you can prepare such a report as well as many others without sampling. This is not possible in this case in the interface.\n\n\n\n### Data cardinality – in BigQuery the level of data aggregation is all up to you\n\nData cardinality occurs when the analysis scope adopted in the report contains too many rows. It could include, for example, a URL, product ID, user ID or multiple combinations of traffic sources. Due to the cardinality of data, you may come across differing values in standard reports and mining reports using the same dimensions and metrics. The cardinality of data in the Google Analytics 4 panel also inserts a row item called \"(other)\" each time the row limit is reached.\nNo such situation will occur in Google BigQuery because you decide on the level of aggregation of the data which you want to work on.\n\n![Google Analytics 4 Data Cardinality](https://a.storyblok.com/f/46798/1358x720/928b1624f0/google-analytics-4-data-cardinality.png)\n\n\n\n### Possibility of linking Google Analytics data to other systems\n\nYou can input a lot of business-related data other than Google Analytics into Google BigQuery, for example, information about advertising costs, statuses from CRM systems, data from Google Merchant Center and much more.\nYou can put it all together and prepare one table, i.e. a so-called 'Data Mart'. You can then visualise such a table on the dashboard, e.g. in Looker Studio, and constantly monitor the marketing performance of your business.\nSuch things are possible without coding thanks to [ready-made solutions that automate the collection and reporting of data.](https://witbee.com/witcloud)\n\n\n\n\u003Cdiv style=\"text-align:center\">\n\u003Cimg src=\"https://a.storyblok.com/f/46798/404x243/c59cb25af6/google-analytics-4-bigquery-data-cost-integration.png\">\n\u003C/div>\n\n\n\n![Google Analytics 4 & Data Integration Report](https://a.storyblok.com/f/46798/999x222/68fc1b50c6/google-analytics-4-bigquery-data-integration-report.png)\n\n\n\n### Validation and continuous monitoring of implementations based on data in Google BigQuery\n\nGA4 data in BigQuery makes it easy to verify reports and event implementations. With all the detailed information at our disposal, including the user ID and the timestamp of each event, you are able to precisely analyse the values sent to Google Analytics when a user interacts with the website. With the aid of appropriate SQL queries, you can detect anomalies in the data or check irregularities related to the sequence of events sent without bypassing the system’s stumbling blocks, i.e. sampling or data cardinality. If a business introduces many changes to a website or app, the constant monitoring of values sent to Google Analytics allows you to quickly react to changes, e.g. an incorrectly sent parameter.\n\n\n\n### Ability to use data for forecasting and prediction with BigQuery ML\n\nAbility to use data for forecasting and prediction with BigQuery ML\nThe use of machine learning in marketing is already becoming a standard. With data in Google BigQuery, you can keep up with these trends and use them to build predictions or forecasts based on our data without having to code in languages like Python or Java. \n[The BigQuery ML Module](https://cloud.google.com/bigquery-ml/docs/introduction) allows you to create models, forecasts and predictions based on SQL, which significantly reduces the barrier to entry into this area and opens up new possibilities, including forecasting traffic and sales from individual marketing channels, detecting anomalies in data, building advanced segmentation for users or creating custom attribution models.\n\n\n\n![Google Analytics 4 & BigQuery ML](https://a.storyblok.com/f/46798/906x427/6549ac28cc/google-analytics-4-bigquery-and-machine-learning.png)\n\n\n\nSo, if you think the answers to the following questions would be useful to you, BigQuery ML is the solution that can help:\n\n\n\n- How much revenue has my business \u003Cs>generated\u003C/s> / \u003Cspan style='color: green' >will generate\u003Cspan> ?\n- How much have we \u003Cs>spent\u003C/s> / \u003Cspan style='color: green'>will we spend\u003C/span> on media?\n- Which products \u003Cspan style='color: green'>will sell\u003C/span> and how much \u003Cspan style='color: green'>will it cost us\u003C/span>?\n- How much have \u003Cs>we earned\u003C/s> / \u003Cspan style='color: green'>will we earn\u003C/span> from all this?\n\n\n\n\u003Cdiv style=\"text-align:center\">\n\u003Cimg src=\"https://a.storyblok.com/f/46798/706x197/7ad081983a/google-analytics-4-bigquery-and-ml-report-example.png\">\n\u003C/div>\n\n\n\n## Raw and unsampled data almost \"for free\" – let's take a look at the costs [Costs]\n\nAs we mentioned at the beginning of the article, with Google Analytics Universal the matter was simple: if you wanted to have unsampled Google Analytics data in BigQuery, you had to have **Google Analytics Premium that cost tens of thousands dollars a year**. Now you have the opportunity to enable this service free of charge. \n\n\n\nGoogle BigQuery itself is a paid service that belongs to the Google Cloud Platform product family. If you set up a billing account in Google Cloud Platform for the first time, you get $300 to use for the first 90 days. Therefore, you can start analysing data for free. \n\n\n\nAlso, it is worth recalling that BigQuery was created for the analysis of very large datasets. As such, the price list of this tool has been tailored to major players, which means that small, medium-sized and sometimes even large enterprises have the opportunity to use great technology at a very low price.\n\n\n\nGoogle BigQuery monthly billing is determined by three elements:\n\n\n\n- $0.02 per month for each GB stored in Google BigQuery, with the first 10 GB being free\n- $5 for each TB processed when running SQL queries on data, with 1 TB per month being free\n- $0.05 for each transferred GB in a real-time data stream (if this option is enabled)\n\n\n\nAccording to the information contained in the documentation, 1 GB of data amounts to ca. 600,000 Google Analytics events. In order to illustrate this figure, we checked an online store which was visited by 260,000 users in one month. Such a store generated 6 million events, which yields an average of 200,000 events per day.\n\n\n\nTo simplify calculations, below is an example estimate for a business generating 600,000 events per day.\n\n\n\nReal-time data streaming\n\n\n\n30 days x 1GB x $0.05 = **$1.5 for sending 18 MLN events** to Google BigQuery per month\n\n\n\nData storage\n\n\n\nThe data will increase every day, so the cost of storage will also increase every month. In order to illustrate the costs, we present it in full denominations. \n\n\n\n1st month: (30 GB – 10 GB for free) * $0.02 = 20 GB * $0.02 = $0.4  \n2nd month: (60 GB – 10 GB for free) * $0.02 = 50 GB * $0.02 = $1  \n3rd month: (90 GB – 10 GB for free) * $0.02 = 80 GB * $0.02 = $1.6  \n…  \n12th month: (360 GB – 10 GB for free) * $0.02 = $7\n\n\n\nPerforming SQL queries on data\n\n\n\nWhen executing a SQL query on data, you can select only the information that is of interest to you. Therefore, not all the information you have has to being processed. For instance, we checked a business with ca. 1 GB of data and 3 quite extensive reports in Looker Studio refreshed every hour. This business processed 1.5 TB of data per month.\n\n\n\n(1.5 TB – 1 TB for free) * 5$ = 0.5 TB for $5 = $2.5\n\n\n\nThe costs of performing queries depend on many issues and so they may vary for individual businesses. A few factors that can affect the costs are as follows:\n\n\n\n- the size of the batch data for the report\n- the number of reports\n- quality of written queries (you can often achieve the same effect many times cheaper, avoiding errors in SQL syntax)\n- traffic on reports connected to, for example, Looker Studio. Each chart or table executes a SQL query to BigQuery, which involves the accrual of additional MB\n\n\n\nThe total monthly cost for a business generating 600,000 events per day\n\n\n\nAssuming that you already have a complete set of data from one year, you will pay $11:\n\n\n\n$7 for storage + $1.5 for streaming + $2.5 for polling = $11\n\n\n\nFor stores that generate far fewer than 600,000 events per month, this service can be practically free.\n\n\n\n## Summary\n\nExporting Google Analytics 4 data to Google BigQuery allows you to prevent data loss and bypass numerous limits and restrictions that await in the panel or API connection. Also, it is a good place to start building your own data warehouse, where you will collect more information, including that concerning advertising costs or statuses from CRM systems. This tool was created for big players, so there is no major barrier to entry when it comes to the price of this solution. If you start using this technology more often, you can leap into the world of machine learning in a relatively simple way and start making better predictions.\nCompanies that start to efficiently use this technology in business will gain a substantial competitive edge on the market.\n","Exporting Google Analytics 4 [GA4] data to Google BigQuery allows you to protect us against data loss and bypass many limits and restrictions waiting for us in the panel or API connection.",{"id":1012,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":1013,"copyright":19,"fieldtype":21,"meta_data":1014,"is_external_url":32},190527407441997,"https://a.storyblok.com/f/296300/900x600/4023fad189/12-ga4-bigquery-why-use-it.png",{},[],[],[],"google-analytics-4-bigquery-why-you-should-use-it","content/knowledge/google-analytics-4-bigquery-why-you-should-use-it",20,[],"822d7ee2-57d3-4e13-94da-dc3109939f73",[],{"name":1025,"created_at":1026,"published_at":1027,"updated_at":1028,"id":1029,"uuid":1030,"content":1031,"slug":1072,"full_slug":1073,"sort_by_date":169,"position":1020,"tag_list":1074,"is_startpage":32,"parent_id":804,"meta_data":169,"group_id":1075,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":1076,"default_full_slug":169,"translated_slugs":169},"Analiza Danych z AI — Wielki Pojedynek","2026-06-22T18:39:31.198Z","2026-08-31T13:49:29.103Z","2026-08-31T13:49:29.121Z",190316426065069,"5c249458-bca6-4d06-8b56-4c08404ea8d5",{"_uid":1032,"title":1033,"content":1034,"eyebrow":736,"showTOC":39,"category":737,"priority":19,"readTime":19,"subtitle":1035,"component":272,"eventDate":19,"heroImage":1036,"meta_tags":1040,"meta_title":1041,"eventFormat":19,"heroButtons":1042,"updatedDate":1045,"bottomBlocks":1046},"analiza-danych-ai-content-page","AI Data Analytics — The Great Model Showdown","## Stop guessing. Meet AI that actually knows your data. [The challenge]\n\nThe largest e-commerce companies have already connected all their data in a single, unified warehouse — one source of truth — and plugged it directly into AI engines. But we’re not stopping at theory. During this webinar, we ran a live battle test: we checked how Gemini, Claude, and ChatGPT handle the analysis of real e-commerce data. You’ll see which one best understands the specifics of e-commerce and delivers the most actionable business insights.\n\n## Why “bare” AI gets lost in your data [Why AI fails]\n\nMany people claim AI in analytics is just a gadget. We prove they’re wrong — but only if you give the model the right context.\n\nThe core problem is the **Fact Gap**: AI has knowledge from the internet, but zero knowledge about your company. Without your historical data, metric definitions, and business context, even the latest model gets lost in guesswork.\n\nWe’ll show you:\n- The difference between **Reporting Analytics** (you search for answers) and **Conversational Analytics** (AI finds them for you)\n- Why uploading a spreadsheet to AI is not enough — without metric definitions, analysis examples, and response structure, even the newest model makes things up\n- How the Fact Gap affects the quality of AI responses in practice\n\n## Experiment agenda: How do AI models handle your business? [Agenda]\n\n1. **Reports vs Conversation** — Static Reporting Analytics vs Conversational Analytics. The difference between seeing data and understanding causes.\n2. **Why “bare” AI fails** — Without metric definitions and business context, even the best model guesses. We prove it live.\n3. **Fact Gap (Knowledge Gap)** — The main challenge: AI knows the internet, but nothing about your company. Historical data and context change everything.\n4. **Conversational Analytics in Looker Studio** — Is it worth using the tool available in Looker Studio Pro or BigQuery? We test it on real examples.\n5. **The Great Model Showdown** — The same business query sent to Claude, ChatGPT, and Gemini via WitCloud MCP. You’ll see live how differently they interpret the same data — and who wins on precision.\n6. **Applications & Costs** — Ready scenarios (e.g. margin drop analysis), actual costs, and what to watch out for during implementation so the experiment in your company is safe.\n\n## About the speaker [Speaker]\n\n**Krzysiek Modrzewski** — Poland’s leading expert in analytics and marketing strategy with over 15 years of experience. Co-founder of Witbee and Marketing Masters. Host of the “Od Danych Do Zysku” (From Data to Profit) podcast.\n\n- **Practitioner, not theorist:** Helps companies transform data chaos into real profits. Co-created educational projects that attracted over 100,000 participants.\n- **Knows your pain:** Has personally gone through the journey from “decision paralysis” to full automation.\n- **Has a ready solution:** Shares the system he built himself to escape “analytics hell.”\n\n## You have a choice: Chaos or Control [Your choice]\n\nYou can keep basing your decisions on incomplete report data, spending hours manually merging Excel files, and getting frustrated when AI makes up numbers again.\n\n**Or** you can invest 60 minutes to see:\n\n- ✅ **How to safely feed AI with your company’s context** — eliminating hallucinations and Fact Gap errors\n- ✅ **Which model wins in a live showdown** (Claude, ChatGPT, or Gemini) analyzing your e-commerce data\n- ✅ **How to get a ready action plan for a declining ROAS in 15 seconds** — instead of clicking through dozens of reports\n\nHarness the power of Conversational Analytics to gain a competitive edge — now.","The live AI data analysis battle test.\n\u003Cbr>\u003Cb>ChatGPT, Claude, Gemini — tested head-to-head on real e-commerce data.\u003C/b>\nWatch the recording on demand.\u003Cbr>\n\u003Cb>Webinar for e-commerce managers, directors, owners, and C-level executives\u003C/b>",{"id":1037,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":1038,"copyright":19,"fieldtype":21,"meta_data":1039,"is_external_url":32},190524925450082,"https://a.storyblok.com/f/296300/900x600/b2096381d8/06-ai-model-showdown.png",{},[],"AI Data Analytics: ChatGPT vs Claude vs Gemini — Live E-commerce Showdown | Webinar",[1043],{"_uid":1044,"href":748,"size":500,"text":868,"target":29,"rounded":19,"variant":31,"component":33,"showArrow":39},"analiza-cta-1","2026-03-05 00:00",[1047],{"_uid":1048,"steps":1049,"header":889,"systems":1067,"anchorId":787,"component":789,"buttonText":891,"description":1068,"progressStyle":30,"privacyPolicyLink":1069,"privacyPolicyText":796,"getResponseCampaignId":1070,"privacyPolicyLinkText":1071},"09912bd0-3ef4-4bc8-860f-1e492e5d8cb7",[1050],{"_uid":1051,"title":759,"fields":1052,"component":778},"48921754-1fea-4388-a41e-6d8e032c7eb4",[1053,1056,1059,1062,1064],{"_uid":1054,"name":763,"type":521,"label":1055,"required":39,"component":765,"fullWidth":32},"6eb355df-9714-4bef-a2d7-7859e009f074","Imię",{"_uid":1057,"name":768,"type":521,"label":1058,"required":39,"component":765,"fullWidth":32},"da2d52bb-63f6-4fcd-9ea4-00d2462e39fc","Nazwisko",{"_uid":1060,"name":772,"type":521,"label":1061,"required":39,"component":765,"fullWidth":39},"8f9bf2d3-ed55-4f63-adee-421af779355f","Firma",{"_uid":1063,"name":885,"type":521,"label":886,"required":32,"component":765,"fullWidth":39},"91fe66af-3bd7-4a08-9ee2-c376603f9b56",{"_uid":1065,"name":776,"type":776,"label":1066,"required":39,"component":765,"fullWidth":39,"businessOnly":39},"c57d5484-218c-458a-ae6a-2655a6a51aea","Email",[782,783,784],"Fill in the registration form and we’ll send you the recording link by email. Watch at any time that suits you.\n\u003Cbr>\u003Cbr>\n\u003Cb>Available on demand — watch the full 60-minute session",{"id":793,"url":19,"linktype":794,"fieldtype":46,"cached_url":795},"LBl1a","Regulamin i polityka prywatności","analiza-danych-z-ai","content/webinars/analiza-danych-z-ai",[],"cb8d52cb-fd54-4510-b4dc-b4d08d7ee751",[],{"name":1078,"created_at":1079,"published_at":247,"updated_at":1080,"id":1081,"uuid":1082,"content":1083,"slug":1101,"full_slug":1102,"sort_by_date":169,"position":170,"tag_list":1103,"is_startpage":32,"parent_id":845,"meta_data":169,"group_id":1104,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":1105,"default_full_slug":169,"translated_slugs":169},"Raport \"na wczoraj\", który dostaniesz za tydzień","2026-06-22T19:22:58.176Z","2026-08-21T07:00:42.990Z",190327104256848,"63e297e4-7adc-4c36-a29f-dfc985044211",{"_uid":1084,"title":1085,"content":1086,"eyebrow":1087,"showTOC":39,"category":219,"readTime":19,"subtitle":1088,"component":272,"heroImage":1089,"meta_tags":1093,"meta_title":1097,"heroButtons":1098,"updatedDate":1099,"bottomBlocks":1100},"raport-content-page","A Report “for Yesterday” That You’ll Get in a Week: How Data Chaos Paralyzes Your E-commerce","## The Anatomy of Paralysis [Paralysis]\n\nIt’s Tuesday, 10:00 AM. A sharp sales peak after the weekend promotion has just ended. You burst into the marketing team meeting with one, simple question: “What was yesterday’s *real* ROAS? We need to know whether to continue the investment or cut the budget.”\n\nSilence.\n\nFinally, someone from the marketing team speaks up uncertainly: “You know, it’s complicated. I checked the Google Ads panel, it shows a ROAS of 4.0. The Facebook panel shows 3.5. But we both know these are ‘optimistic’ numbers from the panels… they might be reporting the same transactions, they don’t account for morning cancellations, and they don’t confirm if all transactions are definitely paid orders. In GA4, the numbers look different again…”\n\nAfter a moment, he adds: “To get the *real* revenue, we have to wait for Greg. He’s the only one with the script that connects these ad costs with our e-commerce system (Magento) and filters orders by ‘paid’ status. The data from our CRM is just more complete. I sent a request… but Greg is on vacation. Realistically, we’ll have that summary… maybe on Friday.”\n\nSound familiar?\n\nA decision that needed to be made in 10 minutes – based on cost data from **Google and Facebook** and *reliable* revenue data from **your store** – has just been postponed by a week. During this time, the marketing budget is either being “burned” on an ineffective campaign or, even worse, a high-performing campaign was paused because no one could confirm its *real* effectiveness in time.\n\nThis isn’t a problem of lacking data. It’s decision-making paralysis caused by chaos in *accessing* it.\n\n## A Problem Deeper Than “Bad Reports” [The Problem]\n\nIn conversations with hundreds of e-commerce managers, we’ve noticed a pattern. The biggest pain point is that data is *unavailable* here and now, in one place.\n\nThe problem we’ve diagnosed has three faces:\n\n1. **Human Silos:** Data is locked in the heads or on the hard drives of specific people. “Only Greg” knows how to merge those two Excels. “Only Ann” has access to that specific view in the system. When a key person is sick or on vacation – the entire analytical process stops.\n2. **Technical Silos:** Data from Facebook Ads lives in its own “optimistic” world. Data from Google Ads in its own. Data from your Magento, Shoper, or PrestaShop is the “source of truth” about real revenue. Without an automatic connection, these two worlds never meet.\n3. **A “Report-Ordering” Culture:** Because data is in silos, accessing it becomes a privilege, not a standard. Teams “order” reports from specialists/analysts, getting in a virtual queue and waiting for their answer.\n\n**And now, the “chaos multiplier”: Scale.**\n\n![The chaos multiplier: scale](https://a.storyblok.com/f/296300/660x278/218caf653e/image3.png)\n\nWhat if you operate not in one, but in **five markets** (in PLN, EUR, CZK)? What if instead of 3 marketing channels, you have **15**, including affiliate networks, Ceneo, TikTok, and dozens of partners? What if the data downloaded to Excel is reported in different currencies?\n\nThis chaos grows exponentially. Every new market and every new channel is another “human silo” and “technical silo.” At this point, manually merging data becomes not just *difficult*. It becomes physically *impossible*.\n\n## The True Cost of a “Quick Question” [True Cost]\n\nLet’s consider what this model costs. A “quick question” that ties up a specialist/analyst for half a day isn’t just the cost of their salary. It is, above all:\n\n- **Opportunity Cost:** Lost sales opportunities because a campaign wasn’t optimized in time.\n- **The Cost of Bad Decisions:** Decisions made “by gut feeling” or based on incomplete data (e.g., only from the “optimistic” ad panel) because “there was no time to wait” for the full picture from the CRM.\n- **The Cost of Team Frustration:** The best specialists/analysts don’t want to be “report factories.” They want to be “growth engines.” When 80% of their time is spent manually copying and pasting data, their potential is wasted. The marketing team is frustrated because they don’t get answers in time.\n\nChaos in data flow is chaos in communication flow. And communication chaos is a straight path to losing in the competitive e-commerce market.\n\n## Freeing the Data: From “Waiting” to “Acting” [Solution]\n\nThe solution to this paralysis isn’t hiring another “Greg” or buying another tool for “pretty charts.” The solution is a fundamental change in the philosophy of data access: **automation and centralization.**\n\nInstead of manually *asking* for data, technology should *prepare* it for us – automatically, every night. At WitBee, we believe (in line with our mission to democratize access to analytics) that data should be a resource available “on-demand,” not “by-order.”\n\nWhat should such an ideal, automated process look like in practice?\n\n1. **Automatic Connection:** The system must be **built to handle scale**. It should automatically, every night, connect to *all* your sources – whether that’s 3 ad systems or 15, one market in PLN or five in different currencies.\n2. **Unification of “Truth”:** The system must automatically pull costs from every channel, but more importantly, connect them with *hard data* from your e-commerce platform — pulling real, paid revenue and filtering by order status.\n3. **Ready for Analysis:** The data must be cleaned and unified. Such a system allows you to report based on *real, paid revenue*, filtering out cancellations.\n\nIn the morning, when you come to work, you don’t have to *ask* for a report. You open your dashboard (e.g., in Looker Studio), which is powered by ready, connected, and up-to-date data from *all* markets.\n\n## How Does a Company Change When Data Flows Freely? [After]\n\n![Before vs After: unified dashboard](https://a.storyblok.com/f/296300/1237x504/1d6757c2e7/image5.png)\n\nLet’s return to the scenario from Tuesday at 10:00 AM.\n\n**The “AFTER” Scenario:**\n\nThe Head of E-commerce comes to the meeting. Everyone is looking at the same, up-to-date dashboard. The question isn’t: “What was the ROAS?” The question is: “I see our global, CRM-based ROAS was 4.5 yesterday, but in the Czech market, the Google Ads X campaign has a ROAS of 8. Marketing team – why do you think that campaign worked so well there, and how can we immediately scale this to Germany?”\n\nThis is a fundamental change.\n\nWhen a company stops wasting time asking “What were the numbers?” and starts discussing “What do we do next?” – it’s a sign it has moved from chaos to strategy. Specialists/analysts stop being “gatekeepers” of data and become strategic partners for the business.\n\n## In Summary [Summary]\n\nThe “report on vacation” is a symptom of a disease called manual data management. If your team too often hears “we have to wait for the data,” “Greg is on vacation,” or “I’ll check on that for tomorrow” – it’s a warning sign.\n\nThis is not a technical problem. It is a strategic “bottleneck” that paralyzes the growth of your e-commerce.\n\n**Think about it: how many decisions this quarter did you make based on a gut feeling, because there simply wasn’t time for hard, connected data from all your markets?**\n\n## Watch the Webinar on Reporting Automation [Webinar]\n\nIf this problem resonates with you and the communication chaos around reporting sounds familiar, we have something for you.\n\nWatch the free webinar: [**“End the Waiting: How to Automate E-commerce Reporting”**](/content/jak-wdrozyc-automatyzacje-raportowania-w-e-commerce)\n\nDuring the session, we’ll show step by step:\n\n- What a modern, automated reporting architecture looks like.\n- How to connect data from multiple ad systems (Google, Meta, TikTok) with “hard” data from your CRM/e-commerce in practice.\n- How to move from chaos in spreadsheets to a single, consistent dashboard that updates itself and tells the truth.\n\nThis won’t be a sales presentation. It will be a workshop showing the *methodology* that frees teams from repetitive work.","Article","Waiting a week for a crucial ROAS report? This article dissects how data chaos, human silos, and manual reporting paralyze e-commerce businesses — and what automation looks like in practice.",{"id":1090,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":1091,"copyright":19,"fieldtype":21,"meta_data":1092,"is_external_url":32},190524925519719,"https://a.storyblok.com/f/296300/900x600/c215f0d3b8/04-report-for-yesterday.png",{},[1094],{"_uid":1095,"name":920,"content":1096,"component":239},"raport-og-image","https://a.storyblok.com/f/296300/1200x628/68af5e29c3/blog_report_yesterday.png","A Report “for Yesterday” That You’ll Get in a Week | WitBee",[],"2025-11-13 00:00",[],"raport-na-wczoraj-ktory-dostaniesz-za-tydzien","content/knowledge/raport-na-wczoraj-ktory-dostaniesz-za-tydzien",[],"b08db62d-51c3-41f6-86ec-33f17bd525c3",[],{"name":1107,"created_at":1108,"published_at":1109,"updated_at":1110,"id":1111,"uuid":1112,"content":1113,"slug":1149,"full_slug":1150,"sort_by_date":169,"position":1151,"tag_list":1152,"is_startpage":32,"parent_id":804,"meta_data":169,"group_id":1153,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":1154,"default_full_slug":169,"translated_slugs":169},"Webinar — E-commerce AI-Ready Data Framework","2026-06-22T14:49:15.952Z","2026-08-23T09:56:12.191Z","2026-08-23T09:56:12.206Z",190259838826986,"23c87417-b5aa-41eb-9a2b-7791b4f5c659",{"_uid":1114,"title":1115,"content":1116,"eyebrow":736,"showTOC":39,"category":737,"priority":19,"readTime":19,"subtitle":1117,"component":272,"heroImage":1118,"meta_tags":1122,"meta_title":1123,"heroButtons":1124,"updatedDate":1127,"bottomBlocks":1128},"719982fb-1233-4669-872c-61aebf3f444c","E-commerce AI-Ready Data *Framework*","## E-commerce leaders in Poland and Europe. What do they have in common? They've already implemented it. [E-commerce leaders]\n\nThe largest e-commerce companies in Poland and Europe have been operating on a single, unified data source for years. They sell across multiple markets simultaneously – and at any moment they know which one is profitable and which needs correction. Full visibility into every dollar spent on marketing, every sales channel, every customer – in one place, in real time.\n\nThis is no magic. It's a concrete data architecture – built on Google BigQuery, automatically fed from all advertising and sales systems, ready to work with AI. Regardless of whether you sell in Poland, Germany, the Czech Republic, or Romania.\n\nUntil recently, this was a privilege of companies with large data engineering teams and enterprise-level budgets. Today – thanks to the **E-commerce AI-Ready Data Framework** – the same standard is available to every mid-sized e-commerce company operating cross-border.\n\nThe question is no longer: \"Is it worth implementing?\" The question is: \"Can you afford not to have it – especially when your competition already does?\"\n\n![Matrix AI Framework](https://a.storyblok.com/f/296300/2668x1568/a82e58ddc9/matrix-ai-framework.jpg)\n\n## The market doesn't wait. Check which side of this divide your company is on. [Which side are you on?]\n\n### Without the framework\n\n- **Conflicting numbers from every platform** — Google Ads says ROAS = 8, Facebook claims 6, CRM shows something else. Who's right? You don't know.\n- **Decisions based on last month's data** — last month's report is ready halfway through the current month. You're optimizing the past, not the present.\n- **Data at the vendor's, not yours** — you switch agencies or tools and lose your history.\n- **AI that doesn't know you** — it works on what it finds online. It knows nothing about your business.\n- **You don't know what's really profitable** — which channel generates profit? Which product burns through the budget?\n- **You don't know which market earns for you** — you have data separately for each market, comparing in Excel.\n\n### With AI-Ready Data Framework\n\n- **One source of truth** — all systems speak one language. One screen instead of ten.\n- **Data updated today, not a month ago** — you make decisions based on what happened today.\n- **Full data sovereignty** — data sits on your Google Cloud infrastructure.\n- **AI that knows your business** — it knows your sales history, customers, and metrics. Answers in seconds.\n- **Profitability visible down to SKU level** — you know which product and channel really earns.\n- **All markets in one view** — PL, DE, CZ, RO – one dashboard, one source of truth.\n\n> E-commerce leaders operating across 3, 5, 10 markets simultaneously are already running on this standard. The question isn't \"is it worth it?\" It's: can you afford your competition having it before you?\n\n## This webinar isn't a tutorial. It's a strategic session for decision-makers. [What we'll show]\n\nWe'll show you – live, in a real environment – what e-commerce built on the Framework looks like. What a director managing sales across multiple markets sees when they have a complete picture of the business.\n\nWe're not revealing all the cards upfront. But we guarantee one thing: after 60 minutes you'll know whether your company is ready for the next stage – and exactly what you're losing if it isn't.\n\nAt the webinar, we'll answer questions that keep every e-commerce director up at night:\n\n1. Why do my data from Google Ads, Facebook, and other platforms show different numbers – and what to do about it?\n2. What does the data infrastructure of market leaders look like, and what makes it possible to have this without hiring a data science team?\n3. What does such a data warehouse really cost – and why do most companies hesitate to ask?\n4. What exactly do I need to do to make AI work on my data – not on data from the internet?\n5. How do I measure customer, product, and channel profitability in one place – without waiting a week for a report?\n6. I sell in Poland, Germany, and the Czech Republic – how do I compare the profitability of each market in one place and know where to scale the budget?\n7. When is it too early, and when is it too late for this transformation?\n\n## You have a choice. But the decision window is closing. [You have a choice]\n\nThe market doesn't wait. E-commerce leaders – those operating in one market and those already selling in several countries – are already running on unified data. They already ask questions in natural language and get answers in seconds. They already know what's happening in their business before a problem appears.\n\nEvery month without a complete data picture means decisions made in the dark: advertising budgets optimized on the wrong numbers, foreign markets that eat up the budget (and you don't know which), customers you can't retain because you don't know they're leaving.\n\n- ✅ **Invest 60 minutes.** Watch the recording and assess where you stand.\n- ✅ See live what e-commerce built on the Framework looks like.\n- ✅ Decide if you want to play in this league – in Poland and abroad.","The new data standard for e-commerce stores operating across multiple markets.\n\u003Cbr>\u003Cb>PL, DE, CZ, RO – one framework, full business visibility.\u003C/b>\nWatch the recording on demand.\u003Cbr>\n\u003Cb>A dedicated webinar for managers, directors, owners, and C-level executives\u003C/b>",{"id":1119,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":1120,"copyright":19,"fieldtype":21,"meta_data":1121,"is_external_url":32},190524925548392,"https://a.storyblok.com/f/296300/900x600/dce9bec989/09-ai-ready-framework.png",{},[],"E-commerce AI-Ready Data Framework | Webinar Recording",[1125],{"_uid":1126,"href":748,"size":500,"text":868,"target":29,"variant":31,"component":33,"showArrow":39},"webinar-cta-1","2025-04-23 00:00",[1129],{"_uid":1130,"steps":1131,"header":889,"systems":1145,"anchorId":787,"component":789,"buttonText":891,"description":1146,"progressStyle":30,"privacyPolicyLink":1147,"privacyPolicyText":796,"getResponseCampaignId":1148,"privacyPolicyLinkText":799},"e35686a7-508e-49f4-9bbb-ed9de3599ad1",[1132],{"_uid":1133,"title":759,"fields":1134,"component":778},"9a446dd0-0042-41e9-a702-86e58be57cbc",[1135,1137,1139,1141,1143],{"_uid":1136,"name":763,"type":521,"label":764,"required":39,"component":765,"fullWidth":32},"a6bd7b30-fc7c-4cbd-9561-8fe783897812",{"_uid":1138,"name":768,"type":521,"label":769,"required":39,"component":765,"fullWidth":32},"f649ce57-f013-485e-93ca-1f448d1ffb70",{"_uid":1140,"name":772,"type":521,"label":773,"required":39,"component":765,"fullWidth":39},"8e69a472-be07-4ede-9b86-5c89714ad187",{"_uid":1142,"name":885,"type":521,"label":886,"required":32,"component":765,"fullWidth":39},"9ef26aa8-7f3d-4de4-a6d3-5ffeff68c697",{"_uid":1144,"name":776,"type":776,"label":777,"required":39,"component":765,"fullWidth":39,"businessOnly":39},"2393f5ea-68c8-4b66-aba6-d9427b1a0e4a",[782,783,784],"Fill in the form and we’ll send you the recording link by email. Watch the full session on the E-commerce AI-Ready Data Framework at any time.\n\u003Cbr>\u003Cbr>\n\u003Cb>Available on demand — watch the full 60-minute session at any time",{"id":793,"url":19,"linktype":794,"fieldtype":46,"cached_url":795},"LPTUV","webinar-data-ai-framework","content/webinars/webinar-data-ai-framework",40,[],"032b9a55-a7dc-4efb-8e16-aec0aff33f19",[],{"name":1156,"created_at":1157,"published_at":247,"updated_at":1158,"id":1159,"uuid":1160,"content":1161,"slug":1174,"full_slug":1175,"sort_by_date":169,"position":1176,"tag_list":1177,"is_startpage":32,"parent_id":845,"meta_data":169,"group_id":1178,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":1179,"default_full_slug":169,"translated_slugs":169},"BigQuery Pricing for E-commerce: A Non-Technical Guide","2026-06-22T13:57:28.322Z","2026-08-21T07:00:42.398Z",190247109968418,"96f672cc-96be-4743-8494-b79f95734fd2",{"_uid":1162,"title":1156,"content":1163,"eyebrow":19,"showTOC":39,"category":219,"readTime":19,"subtitle":1164,"component":272,"heroImage":1165,"meta_tags":1169,"meta_title":1156,"heroButtons":1172,"updatedDate":923,"bottomBlocks":1173},"8c37b8a8-35d4-4a37-a686-485ce2660d88","When you hear the term \"Data Warehouse\" or \"BigQuery,\" two thoughts probably cross your mind. First: \"This is the technology I need to connect data and scale my business.\" Second: \"This sounds like a Google invoice I won't have control over.\"\n\nCloud pricing and many guides refer to complicated concepts for a non-technical person. They are full of terms like _active storage_, _slot time_, or _streaming inserts_. And many store owners ask themselves a simple question: \"Will this ruin me?\"\n\nThe answer is: **No, if the data architecture is correct.**\n\nBigQuery is like a powerful industrial machine. It is cheap to maintain, as long as you use it wisely. In this guide, we will go through all cost stages and show where the line lies between a \"playground for analysts\" and real reporting for business.\n\n\n\n**Important Disclaimer:** It would be easiest to write, as is common in various guides, \"It depends...\".  \nCloud costs are fluid. Nevertheless, the calculations below are real estimates for a medium/large e-commerce, aimed at showing the scale of costs and the differences between the \"raw\" and the optimized approach.\n\n\n\n## Part 1: Storage - We are safe here\n\nLet's start with the basics. BigQuery is, simply put, a gigantic Excel in the cloud. The first cost is storing data (e.g., from GA4, CRM, ads).  \nYou pay for how much space your data occupies on Google's disks.\n\n### Example: Store generating 10 million events monthly in GA4\n\n![](https://a.storyblok.com/f/296300/964x316/1ba15af773/image7.png)\n\n\nLet's assume your e-commerce generates 10 million actions monthly (views, clicks, purchases).\n\n- **GA4:** 10 million events is approx. 10 GB monthly (averaging that one event is approx. 0.5 - 1 KB of data)\n- **Additionally, orders/products database from CRM and campaign data from the ad system:** approx. 5-8 GB monthly.\n- **Total:** You gain approx. 15-18 GB of data every month.\n\nEstimated cost:  \nGoogle offers the first 10 GB per month for free. Each subsequent gigabyte costs around $0.02.  \nEven if you accumulate a 3-year history (approx. 500 GB), the monthly cost of maintaining this archive will close around $10 per month.  \n**Conclusion:** Just _keeping_ data is very cheap.\n\n\n\n## Part 2: Data Delivery - in batches or instantly\n\nYou have two options for sending data to BigQuery.\n\nLet's look at the example of data export from Google Analytics 4:\n\n1. **Daily Export:** Once a day, in the morning, Google packs yesterday's data and uploads it to your warehouse. **Cost: $0.**\n2. **Streaming (Live):** Data hits the database minutes after the event. **Cost: approx. $0.05 per GB.**\n\n**Conclusion:** BigQuery does not charge fees in this case for the process of saving data in the form of packages (so-called batch). In the case of streaming (sending live data), you also have nothing to worry about if your scale isn't very large (10 GB * $0.05 = $0.50 monthly).\n\n![](https://a.storyblok.com/f/296300/1024x751/39962a04d1/image8.png)\n\n\n\n\n## Part 3: Processing (Query) - Two Worlds of Costs\n\nHere we get to the heart of the matter. BigQuery makes money on **reading** data ($6.25 per 1 TB). But who reads this data? Here we must distinguish between two scenarios, because they determine your invoice.\n\n### World 1: Analyst in the console (Human Factor)\n\nThis is the situation where your analyst goes directly into BigQuery and writes SQL code to answer an \"ad hoc\" question, e.g., _\"Check why the conversion from iPhones dropped last Tuesday\"_.\n\nHere the cost depends 100% on **human skill**.\n\n- **Junior Analyst:** Might write a SELECT * query that mindlessly reads the entire database (terabytes of data) to find 5 rows. Cost of one query: **$5**.\n- **Senior Analyst:** Will use partitions, select only necessary columns, and limit scanning. The same query will be executed for **$0.05**.\n\nThis is a \"laboratory\". Here costs are one-off and depend on skill. But business rarely sits in the console. Business sits in reports.\n\n![](https://a.storyblok.com/f/296300/1024x565/363eb64c01/image3.png)\n\n\n### World 2: Business in Looker Studio (Automated)\n\nThis is your daily life. You have a dashboard in Looker Studio. You don't write SQL code there - you click filters, change dates.  \nBut Looker Studio must send an SQL query to BigQuery in the background to draw a chart.  \nAnd here the problem appears: The Automaton (Looker Studio) is not as clever as the Senior Analyst. If you connect it to raw data, it will generate heavy, expensive queries with your every click.\n\n![](https://a.storyblok.com/f/296300/1024x559/ef88e496c9/image5.png)\n\n\nWe have frequently worked on projects where we optimized the costs of non-optimal queries used in reports. Let's look at the example below - every day the report generated increasingly higher costs, reaching the amount of $53 per day. By introducing slight changes in SQL queries (skill), the report continued to work the same way, but costs dropped almost to 0. However, this is best presented in an example case study.\n\n![](https://a.storyblok.com/f/296300/1480x529/da9271ddeb/image4.png)\n\n\n## Part 4: Case Study - How much does a Quarterly Report cost?\n\nLet's assume you have a sales dashboard from the last 90 days. It is used by **5 people** (board, marketing).\n\n### Scenario A: The \"Raw\" Route (Looker Studio -> Raw Data)\n\nYou connect the report directly to tables with raw GA4 events.  \nOne day of raw data weighs 1 GB. A 90-day report must therefore \"touch\" 90 GB of data.\n\n1. **Interaction Trap:** Looker Studio is \"wasteful\". To display a dashboard with 10 elements (charts, counters), it can send 10 separate queries.\n2. **No Cache:** BigQuery has a cache, but it only works if you change nothing.\n    - The Manager enters the report.\n    - Clicks the \"Black Friday Campaign\" filter.\n    - Cache stops working. BigQuery must sift through **90 GB** again to cut out just this campaign.\n    - The Manager changes the table sorting. Another 90 GB.\n\nEffect:  \n5 people × 10 filter changes daily × gigabytes of data.  \nThe invoice becomes unpredictable. It could be $50, or it could be $300 if the team is very active. You pay every time someone touches the report.\n\n### Scenario B: The \"Data Mart\" Approach (WitCloud)\n\nThis approach is based on the principle: **Let's prepare the data once, but properly.**\n\nThe process looks like this:\n\n1. **Automatic Task (Job):** Every morning the system downloads data **only from yesterday** (1 GB of raw data).\n2. **Aggregation:** The system extracts what is important and saves it in the **Data Mart**. The resulting \"brick\" from one day weighs e.g., 20 MB (and not 1000 MB).\n3. **Adding the brick:** This small portion of data is appended to the main table as a new partition.\n\nWhat happens in the report?  \nWhen the Manager changes dates, filters, and sorts, Looker Studio queries the Data Mart.  \nInstead of scanning 90 GB, it scans 90 small \"bricks\" (total 1.8 GB).  \n**Estimated monthly cost:**\n\n1. **Daily processing:** You pay in the morning for recalculating _only one day_ of raw data. This is a fixed cost, approx. **$15 - $25 monthly**.\n2. **Reporting:** Because you work on lightweight data, hundreds of clicks by your managers generate a cost in the range of **$2 - $5 monthly**.\n\n**Total:** **$20 - $30 monthly**. A fixed amount, independent of how often you check the results.\n\n![](https://a.storyblok.com/f/296300/1024x559/926a3bc7f0/image6.png)\n\n\n\n\n## Part 5: Why does it work? Two pillars of savings\n\nThe secret to low costs in the Data Mart approach relies on two technical mechanisms. Partitioning is only half the success. The other half is **Aggregation (Reducing detail)**.\n\nTo understand this, imagine how a large supermarket works.\n\n### Pillar 1: Aggregation (Instead of a million receipts - a summary)\n\n- **Raw Data:** This is a giant sack where you keep **all receipts** from all cash registers. Each receipt has a list of products, time, cashier. If you have 10,000 customers daily, you have 10,000 long receipts (rows in the database).\n  - When you ask BigQuery for revenue, the database must take every receipt in hand and sum up the amounts. This takes time and costs money because the database \"crunches\" a huge amount of information.\n- **Data Mart (Aggregation):** This is a situation where the accountant takes these 10,000 receipts once a day, calculates what is important, and writes it on a single sheet: _\"Day: Tuesday. Total sales: 50,000. Number of transactions: 10,000\"_.\n  - We put this single sheet (aggregation result) into the Data Mart.\n  - **Effect:** Instead of keeping millions of rows about every click, we keep a dozen rows with the daily summary. The table becomes 1000x lighter.\n\n![](https://a.storyblok.com/f/296300/1024x559/43e4ca93c0/image1.png)\n\n\n### Pillar 2: Partitioning (Order in the binder)\n\nSince we already have these lightweight \"daily summary sheets,\" we must arrange them well.\n\n- **Without Partitions:** Sheets with summaries lie in one pile. To find \"July,\" you have to dig through everything.\n- **With Partitions:** Sheets are filed in a binder, where each plastic sleeve is labeled with a date.\n\n![](https://a.storyblok.com/f/296300/1024x559/e9ff619d89/image2.png)\n\n\n### How does it work together?\n\nWhen your Manager opens the Dashboard in Looker Studio and asks for results from the last quarter:\n\n1. Thanks to **Partitioning**, BigQuery opens only 90 specific sleeves in the binder (it doesn't touch the rest of the year).\n2. Thanks to **Aggregation**, inside each sleeve it finds not thousands of receipts, but one sheet with a summary.\n\nThat is why the report loads in a fraction of a second and costs fractions of a cent. BigQuery doesn't have to calculate anything anymore (because we calculated it in the morning) - it only **reads** the ready result.\n\n\n\n## Summary: So how much does it actually cost?\n\nFor a typical e-commerce with 10 million events monthly, the real bill for BigQuery with a well-designed architecture looks as follows:\n\n| Cost Type | Description | Estimated Amount |\n| :--- | :--- | :--- |\n| **Storage** | Maintaining data from several years (GA4, Ads, CRM). | **$5 - $15** (depending on history) |\n| **Processing (ETL)** | Daily recalculation of _only new_ data to Data Marts. | **$15 - $25** |\n| **Reporting (Query)** | Using dashboards in Looker Studio (on lightweight data). | **$1 - $5** |\n| **TOTAL** | | **$25 - $45 / monthly** |\n\nBigQuery is not expensive - ignorance is expensive. It is risky to put raw data in the hands (and tools) of people who do not optimize queries. Implementing an intermediate layer (Data Marts) - whether manually or through platforms like **WitCloud** - turns an unpredictable invoice into a low, fixed subscription.","When you hear the term \"Data Warehouse\" or \"BigQuery,\" two thoughts probably cross your mind. First: \"This is the technology I need to connect data and scale my business.\" Second: \"This sounds like a Google invoice I won't have control over.\"",{"id":1166,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":1167,"copyright":19,"fieldtype":21,"meta_data":1168,"is_external_url":32},190524925572970,"https://a.storyblok.com/f/296300/900x600/af11b1a8b3/02-bigquery-pricing.png",{},[1170],{"_uid":919,"name":920,"content":1171,"component":239},"https://a.storyblok.com/f/296300/1200x628/b1e5c63eae/bigquery_pricing_eng.png",[],[],"bigquery-pricing-for-e-commerce-a-non-technical-guide","content/knowledge/bigquery-pricing-for-e-commerce-a-non-technical-guide",50,[],"fa6065ad-9fb4-4ee4-ba50-114a75d184ec",[],{"name":1181,"created_at":1182,"published_at":247,"updated_at":1183,"id":1184,"uuid":1185,"content":1186,"slug":1199,"full_slug":1200,"sort_by_date":169,"position":1201,"tag_list":1202,"is_startpage":32,"parent_id":845,"meta_data":169,"group_id":1203,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":1204,"default_full_slug":169,"translated_slugs":169},"Dlaczego Twoja analityka przestanie działać za 6 miesięcy? ","2026-06-22T13:54:43.098Z","2026-08-21T07:00:42.320Z",190246433222209,"206bc95d-0a1f-4346-a0b2-b29f8658bcae",{"_uid":1187,"title":1188,"content":1189,"eyebrow":19,"showTOC":39,"category":219,"readTime":19,"subtitle":1190,"component":272,"heroImage":1191,"meta_tags":1195,"meta_title":1188,"heroButtons":1197,"updatedDate":923,"bottomBlocks":1198},"cc1f6ce3-33f2-4bfa-9dcf-0a690bf791ef","Why Your Analytics Will Fail in 6 Months: 3 Ways to Build E-commerce Analytics","## Why Will Your Analytics Stop Working in 6 Months?\n\nThe story of every e-commerce business starts innocently. In the beginning, there is **one online store**. An order panel in a system like Magento, Shoper, or Idosell is enough for you. Everything is clear – you have access to basic information about revenue, customers, and products.\n\nBut then you start to grow.\n\nYou connect **Google Analytics 4** to understand user behavior. You launch campaigns in **Google Ads, Meta Ads, TikTok Ads, and Criteo** to drive traffic. You enter **Allegro** (Marketplace) to increase reach. You start cooperating with price comparison engines (**Ceneo**) and affiliate networks.\n\nFinally, you make the decision: \"We are entering foreign markets.\" You open sales in the Czech Republic, Germany, or Romania.\n\nAnd at this moment, the scale of the problem explodes. You now have separate ad accounts for each country, reports in different currencies (PLN, EUR, CZK, RON), and separate product feeds. You wake up in a world where data is in thirty different places. The Facebook panel shows different conversions than GA4, the store's CRM doesn't see costs from Romania, and calculating margins takes two days in Excel.\n\nInstead of clarity, you have chaos.\n\nYou then face a choice: how to \"build a home\" for your data to get it under control? In the world of analytics, you have three paths. Two of them are traps that look tempting at the start but collapse like a house of cards when your company begins to scale.\n\n![](https://a.storyblok.com/f/296300/1228x528/bf2239917e/proces_wzrostu_ecommerce.png)\n\n\nHere is a story about analytical maturity – based on the old fable of the three little pigs, but with a very modern (and painful) moral.\n\n## Path 1: The \"Black Box\" Trap (The House of Straw)\n\nThe first path is chosen by pragmatists who want results \"right now.\" You choose ready-made, closed reporting systems (so-called black boxes).\n\n* **What does it look like?** You connect an account, pay a subscription, and see nice charts. It is fast and painless.\n* **Where is the problem?** This solution works until you ask a difficult question. You see metrics (e.g., ROAS), but you have no idea how they were calculated. You do not have access to the raw data underlying that result.\n\n**What happens when Growing Requirements (The Wolf) come?**\n\nOne day your company grows, and you need to do something more with the data than just look at it. That's when you start hitting wall after wall:\n\n1. **The \"Main Report\" Wall:** The board uses Power BI or Tableau. You want to add marketing costs from your \"black box\" there to see the full business bill. **Reality:** It’s impossible. You are in a closed ecosystem. You are left with manually pasting CSVs into Excel every Monday.\n2. **The \"CRM Automation\" Wall:** Your sales team wants to see in the CRM which ads a lead clicked on. **Reality:** Your \"black box\" has no API or it is very limited. You cannot \"feed\" the sales department with marketing knowledge.\n3. **The \"AI Partners\" Wall:** You hire an AI agency that asks for historical transactional data to train its algorithms. **Reality:** There is no way to securely share a slice of the data.\n\n**The Finale:** You hire a great analyst. They want to build their own attribution model on raw data. The \"black box\" provider says: *\"Of course, we share raw data in the Enterprise plan, which costs 5 times more.\"* Your data has become a hostage.\n\n## Path 2: The Illusion of Control, or \"Do It Yourself\" (The House of Sticks)\n\nThe second path is for the clever ones. You think: *\"I won't let them lock me in a box! We'll do it ourselves in-house. We have free connectors and Greg in IT.\"* This is the DIY approach, which usually ends in chaos in two acts:\n\n**Act I: The Connector Frankenstein in Looker Studio**\nYou connect separate plugins directly to Looker Studio: Facebook Ads, Google Ads, GA4, CRM.\n\n* **Problem:** These are silos. To see the whole picture (e.g., profit vs. spend), you have to force-combine these sources in the visualization tool (Blended Data).\n* **Risk:** The business logic is \"sewn\" into fragile report filters, not the database. One error in campaign naming is enough for the entire report to stop working.\n\n**Act II: The Swamp of Raw Data (ETL without a plan)**\nYou go a step further. You dump data into your own BigQuery using simple ETL tools.\n\n* **Problem:** You have access to data, but it is a so-called \"Data Swamp.\" You have 800 tables: orders separately, products separately, campaigns separately. Nothing matches anything else.\n* **Risk:** To use this, someone must write and maintain complicated SQL logic.\n\n**What happens when \"Greg\" leaves?**\nThis whole structure holds together only thanks to the one person who built it. When \"Greg\" leaves the company, he takes the knowledge with him. You are left with infrastructure that no one understands. A new analyst, instead of looking for insights, wastes months on reverse engineering, trying to understand why the numbers don't add up.\n\n## Path 3: The WitCloud Foundation (The House of Brick)\n\nThe third path is for those who understand that analytics is an investment in company assets. You choose **WitCloud (All In One)**.\n\nWhy is this the house of brick? Because it combines the advantages of both worlds while eliminating their disadvantages.\n\n**First: Automating the \"Dirty Work\"**\nWitCloud is a platform that does the heavy engineering work for you. Our module automatically downloads, cleans, and unifies data from over a dozen systems (Ads, GA4, CRM, Marketplaces). You don't worry about changes in the Facebook or TikTok API – we take care of maintaining this infrastructure. Your technical team sleeps soundly.\n\n**Second: Visualization at the Start + Openness to Growth**\nWe don't leave you with just a database. You receive a set of base reports in Looker Studio. For many companies, this is enough to make decisions \"here and now.\" But what if your appetite grows? Because the data is **your property** and sits on your Google Cloud, you have full freedom:\n\n* You can develop reports yourself.\n* You can commission us to build dedicated dashboards.\n* You can collaborate with any agency that knows SQL/BigQuery. No one needs to learn \"our system\" – they work on Google standards.\n\n**Third: An Analyst's Paradise**\nWhen you hire an analyst, you don't give them a \"black box\" or a \"swamp of 800 tables.\" You give them access to ready-made, documented datamarts (e.g., for margin analysis or custom attribution models). The analyst can write their own SQL queries or plug data into AI tools. You pay an expert for **insights** (high value), not for \"data cleaning\" (low value).\n\n## Moral: From Fighting Tools to Using Data\n\nAnalytical maturity is the moment when you stop fighting with tools and start using data.\n\nDon't build with straw (because lack of access or Enterprise costs will limit you). Don't build with sticks (because you will drown in technical debt when your \"Greg\" leaves and you enter another market).\n\nBuild a foundation with WitCloud. Thanks to this, regardless of whether you have one marketer today or an international Business Intelligence department in a year – your analytical environment will be ready, secure, and scalable. And you will be the owner of the truth about your business.","Is your analytics built of straw, sticks, or brick? We use the Three Little Pigs metaphor to reveal critical e-commerce data mistakes. Discover why \"black box\" systems and simple Looker Studio plugins fail at scale, and learn how to build a durable data foundation on Google Cloud with WitCloud.",{"id":1192,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":1193,"copyright":19,"fieldtype":21,"meta_data":1194,"is_external_url":32},190524925515621,"https://a.storyblok.com/f/296300/900x600/429a949a9c/01-analytics-will-fail.png",{},[1196],{"_uid":919,"name":920,"content":1096,"component":239},[],[],"dlaczego-twoja-analityka-przestanie-dzialac-za-6-miesiecy","content/knowledge/dlaczego-twoja-analityka-przestanie-dzialac-za-6-miesiecy",60,[],"a802a9ba-4d8f-4b74-87e5-254578633e1c",[],{"name":1206,"created_at":1207,"published_at":247,"updated_at":1208,"id":1209,"uuid":1210,"content":1211,"slug":1223,"full_slug":1224,"sort_by_date":169,"position":1225,"tag_list":1226,"is_startpage":32,"parent_id":845,"meta_data":169,"group_id":1227,"first_published_at":247,"release_id":169,"lang":175,"path":169,"alternates":1228,"default_full_slug":169,"translated_slugs":169},"Automatyzacja raportowania w Idosell","2026-06-22T13:50:14.896Z","2026-08-21T08:06:51.629Z",190245334650087,"89e37058-b2cf-4176-abb3-aea13eb27f7e",{"_uid":1212,"title":1213,"content":1214,"eyebrow":19,"showTOC":39,"category":219,"readTime":19,"subtitle":1215,"component":272,"heroImage":1216,"meta_tags":1218,"meta_title":1188,"heroButtons":1220,"updatedDate":1221,"bottomBlocks":1222},"dcd6133f-6e3f-4e5a-8954-c8c8d001bb22","Do you run a shop on the IdoSell platform? Then this is a must-read for you.","## Dear manager, director, owner, or simply an employee of a store operating on IdoSell.\n\nYou operate an online store and probably, like most online stores, you struggle with a quite large problem that you might not even be aware of. But thanks to the fact that you use the IdoSell platform, dealing with this can be simpler than ever before.\n\nLet's start from the beginning, though: what problem am I actually talking about.\n\nOkay.\n\nIt's not entirely simple to explain, which is why many people don't consider it a problem. And yet, it is.\n\nIt's a problem with analytics. Not with data. You have data, and probably more than you need. It's about utilizing that data. It's about a problem on three levels.\n\n## The first is the way you make decisions based on your data.\n\nI can assume that when you really need a report, you either send a request to someone to create such a report, or you sit down yourself and piece something together that you hope will help you. After all, you have some data in your IdoSell panel, e.g., sales data, inventory data, or customer data. On the other hand, you have data on the effectiveness of marketing activities you invest in and website traffic data in the Google Analytics 4 panel. And data on ads and spending can be found in specific ad panels, e.g., Google Ads, Meta Ads, Ceneo, etc. Then there's sales via marketplaces or Allegro.\n\nOr maybe you operate in more than one market, selling in Germany, Romania, the Czech Republic too? Isn't every such market coincidentally a separate Google Analytics account, a separate Google Ads account, and even separate store panels, different sales reports?\n\nIf you would like to see the full picture of your business, its health, all marketing expenses, and true information about sales, then this requires downloading and combining information from all these tools we listed.\n\nOr you just look at a small fragment of reality and it works somehow.\n\n## The second level of this problem is advertising systems.\n\nMarketing specialists have fewer and fewer opportunities to set how and where your ads are displayed. This is mostly decided by an algorithm now. And this algorithm needs the best possible data to operate. Stop with the excuse that half the money is wasted anyway. If the system gets correct information about user behavior, it will handle campaign optimization, and you will start earning from it. It's worth remembering here that it is still a human who decides on campaign division and the rules under which the system operates. The more accurate the data, e.g., about product popularity and effectiveness, the better we can manage ROAS bid settings.\n\n## The third problem is AI, which is being discussed in every possible context.\n\nEveryone wants to use AI now. But practically every presentation also features the \"garbage in, garbage out\" slide. AI works on the data we feed it. But this data must be properly arranged and described. Prepared so that AI can work on it. Without this, let's not expect spectacular or even any results.\n\nI admit that while writing this text, I feel like listing further: a fourth, fifth, sixth problem, but it doesn't make sense. If you manage an online store, you understand what I'm writing about.\n\nYou don't need data; you need one place where your data will be stored, organized, updated in real-time, and accessible both to you and the tools you use.\n\n## In short, you need a Data Warehouse.\n\nUntil recently, a complicated project, very time-consuming, requiring a team of specialists. You have to set up a cloud server, program connections between systems, organize data, and take care of the stability of the entire infrastructure. A lot of work, large budgets. An option unavailable to most stores.\n\n## But you have a store on IdoSell. And that changes a lot.\n\nYou have the opportunity to collect store data, Google Analytics 4 data, marketing data, and marketplace data (so practically everything you need) in one place, in your secure cloud project. Data can be updated in real-time, and you can have access to one full report containing all information at any time of the day or night.\n\nThis data can feed marketing systems. Your AI agents can operate on this data.\n\nWithout an IT department, without multi-month projects, without huge costs.\n\nI know, it sounds unreal, it sounds like marketing, there must be a catch somewhere, and probably more than one.\n\nIs there really?\n\nOr maybe just check it out -> sign up for the webinar on reporting automation in e-commerce.\n\nYou don't have to use the opportunities you'll learn about. Maybe you don't need this. Maybe these problems don't affect you that much.\n\nBut as a person managing or working in e-commerce, you should know what solutions are available. Because ignorance is the worst.\n\nOr maybe you'll find something that will allow you to strategically increase revenue and reduce costs, saving you many hours a week. Maybe you'll find a way for AI to finally bring real value to the company?\n\nI know one thing: it's worth finding out for yourself.\n\nClick the link, fill out the form, and come to the webinar. In the worst case, you'll learn what reporting automation means and how a data warehouse works. In the best case, you will transform your online store.\n\nSo?\n\nSee you there!","Dear manager, director, owner, or simply a team member of an IdoSell store.\n\nYou run an online store, and like most e-commerce businesses, you’re likely facing a major challenge - one you might not even be aware of. But because you’re using the IdoSell platform, fixing it could be easier than ever before.",{"id":860,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":861,"copyright":19,"fieldtype":21,"meta_data":1217,"is_external_url":32},{},[1219],{"_uid":919,"name":920,"content":1096,"component":239},[],"2025-12-09 00:00",[],"automatyzacja-raportowania-w-idosell","content/knowledge/automatyzacja-raportowania-w-idosell",70,[],"77cdbe23-acb0-44d8-a782-ff13da58a8f6",[],{"data":1230,"body":1231,"excerpt":-1,"toc":1237},{"title":19,"description":128},{"type":513,"children":1232},[1233],{"type":516,"tag":517,"props":1234,"children":1235},{},[1236],{"type":521,"value":128},{"title":19,"searchDepth":523,"depth":523,"links":1238},[],{"data":1240,"body":1241,"excerpt":-1,"toc":1247},{"title":19,"description":221},{"type":513,"children":1242},[1243],{"type":516,"tag":517,"props":1244,"children":1245},{},[1246],{"type":521,"value":221},{"title":19,"searchDepth":523,"depth":523,"links":1248},[],{"data":1250,"body":1252,"excerpt":-1,"toc":1267},{"title":19,"description":1251},"Stop Burning Your Budget on One-Time Customers.",{"type":513,"children":1253},[1254],{"type":516,"tag":517,"props":1255,"children":1256},{},[1257,1259,1265],{"type":521,"value":1258},"Stop Burning Your Budget on ",{"type":516,"tag":1260,"props":1261,"children":1262},"em",{},[1263],{"type":521,"value":1264},"One-Time Customers",{"type":521,"value":1266},".",{"title":19,"searchDepth":523,"depth":523,"links":1268},[],{"data":1270,"body":1272,"excerpt":-1,"toc":1289},{"title":19,"description":1271},"Free live webinar for e-commerce managers, directors, and owners.\nAds keep getting pricier, and doubling your budget doesn't double your sales — we'll show you how to combine profitable retention with effective acquisition using your own LTV data.",{"type":513,"children":1273},[1274],{"type":516,"tag":517,"props":1275,"children":1276},{},[1277,1279,1283],{"type":521,"value":1278},"Free live webinar for e-commerce managers, directors, and owners.\n",{"type":516,"tag":1280,"props":1281,"children":1282},"br",{},[],{"type":516,"tag":1284,"props":1285,"children":1286},"b",{},[1287],{"type":521,"value":1288},"Ads keep getting pricier, and doubling your budget doesn't double your sales — we'll show you how to combine profitable retention with effective acquisition using your own LTV data.",{"title":19,"searchDepth":523,"depth":523,"links":1290},[],{"data":1292,"body":1293,"excerpt":-1,"toc":1299},{"title":19,"description":1033},{"type":513,"children":1294},[1295],{"type":516,"tag":517,"props":1296,"children":1297},{},[1298],{"type":521,"value":1033},{"title":19,"searchDepth":523,"depth":523,"links":1300},[],{"data":1302,"body":1304,"excerpt":-1,"toc":1329},{"title":19,"description":1303},"The live AI data analysis battle test.\nChatGPT, Claude, Gemini — tested head-to-head on real e-commerce data.\nWatch the recording on demand.Webinar for e-commerce managers, directors, owners, and C-level executives",{"type":513,"children":1305},[1306],{"type":516,"tag":517,"props":1307,"children":1308},{},[1309,1311,1314,1319,1321,1324],{"type":521,"value":1310},"The live AI data analysis battle test.\n",{"type":516,"tag":1280,"props":1312,"children":1313},{},[],{"type":516,"tag":1284,"props":1315,"children":1316},{},[1317],{"type":521,"value":1318},"ChatGPT, Claude, Gemini — tested head-to-head on real e-commerce data.",{"type":521,"value":1320},"\nWatch the recording on demand.",{"type":516,"tag":1280,"props":1322,"children":1323},{},[],{"type":516,"tag":1284,"props":1325,"children":1326},{},[1327],{"type":521,"value":1328},"Webinar for e-commerce managers, directors, owners, and C-level executives",{"title":19,"searchDepth":523,"depth":523,"links":1330},[],{"data":1332,"body":1333,"excerpt":-1,"toc":1339},{"title":19,"description":962},{"type":513,"children":1334},[1335],{"type":516,"tag":517,"props":1336,"children":1337},{},[1338],{"type":521,"value":962},{"title":19,"searchDepth":523,"depth":523,"links":1340},[],{"data":1342,"body":1344,"excerpt":-1,"toc":1368},{"title":19,"description":1343},"Free webinar for e-commerce managers, directors, and owners.\nCustomer analysis: LTV, CAC, RFM, cohorts and AI in one framework.\nWatch the recording on demand.For e-commerce managers, directors, owners, and C-level executives",{"type":513,"children":1345},[1346],{"type":516,"tag":517,"props":1347,"children":1348},{},[1349,1351,1354,1359,1360,1363],{"type":521,"value":1350},"Free webinar for e-commerce managers, directors, and owners.\n",{"type":516,"tag":1280,"props":1352,"children":1353},{},[],{"type":516,"tag":1284,"props":1355,"children":1356},{},[1357],{"type":521,"value":1358},"Customer analysis: LTV, CAC, RFM, cohorts and AI in one framework.",{"type":521,"value":1320},{"type":516,"tag":1280,"props":1361,"children":1362},{},[],{"type":516,"tag":1284,"props":1364,"children":1365},{},[1366],{"type":521,"value":1367},"For e-commerce managers, directors, owners, and C-level executives",{"title":19,"searchDepth":523,"depth":523,"links":1369},[],{"data":1371,"body":1372,"excerpt":-1,"toc":1378},{"title":19,"description":856},{"type":513,"children":1373},[1374],{"type":516,"tag":517,"props":1375,"children":1376},{},[1377],{"type":521,"value":856},{"title":19,"searchDepth":523,"depth":523,"links":1379},[],{"data":1381,"body":1383,"excerpt":-1,"toc":1405},{"title":19,"description":1382},"Free webinar for e-commerce managers, directors, and owners.\nAutomate your reporting — make decisions in 10 minutes, not after a week of waiting.\nWatch the recording on demand.For e-commerce managers, directors, owners, and C-level executives",{"type":513,"children":1384},[1385],{"type":516,"tag":517,"props":1386,"children":1387},{},[1388,1389,1392,1397,1398,1401],{"type":521,"value":1350},{"type":516,"tag":1280,"props":1390,"children":1391},{},[],{"type":516,"tag":1284,"props":1393,"children":1394},{},[1395],{"type":521,"value":1396},"Automate your reporting — make decisions in 10 minutes, not after a week of waiting.",{"type":521,"value":1320},{"type":516,"tag":1280,"props":1399,"children":1400},{},[],{"type":516,"tag":1284,"props":1402,"children":1403},{},[1404],{"type":521,"value":1367},{"title":19,"searchDepth":523,"depth":523,"links":1406},[],{"data":1408,"body":1409,"excerpt":-1,"toc":1415},{"title":19,"description":1213},{"type":513,"children":1410},[1411],{"type":516,"tag":517,"props":1412,"children":1413},{},[1414],{"type":521,"value":1213},{"title":19,"searchDepth":523,"depth":523,"links":1416},[],{"data":1418,"body":1420,"excerpt":-1,"toc":1431},{"title":19,"description":1419},"Dear manager, director, owner, or simply a team member of an IdoSell store.",{"type":513,"children":1421},[1422,1426],{"type":516,"tag":517,"props":1423,"children":1424},{},[1425],{"type":521,"value":1419},{"type":516,"tag":517,"props":1427,"children":1428},{},[1429],{"type":521,"value":1430},"You run an online store, and like most e-commerce businesses, you’re likely facing a major challenge - one you might not even be aware of. But because you’re using the IdoSell platform, fixing it could be easier than ever before.",{"title":19,"searchDepth":523,"depth":523,"links":1432},[],{"data":1434,"body":1435,"excerpt":-1,"toc":1441},{"title":19,"description":908},{"type":513,"children":1436},[1437],{"type":516,"tag":517,"props":1438,"children":1439},{},[1440],{"type":521,"value":908},{"title":19,"searchDepth":523,"depth":523,"links":1442},[],{"data":1444,"body":1446,"excerpt":-1,"toc":1457},{"title":19,"description":1445},"The business bottleneck was analytical chaos, i.e., manual work:",{"type":513,"children":1447},[1448,1452],{"type":516,"tag":517,"props":1449,"children":1450},{},[1451],{"type":521,"value":1445},{"type":516,"tag":517,"props":1453,"children":1454},{},[1455],{"type":521,"value":1456},"The team spent a huge amount of time manually combining data from various systems just to create simple reports (e.g., a summary of marketing expenses).",{"title":19,"searchDepth":523,"depth":523,"links":1458},[],{"data":1460,"body":1461,"excerpt":-1,"toc":1467},{"title":19,"description":1156},{"type":513,"children":1462},[1463],{"type":516,"tag":517,"props":1464,"children":1465},{},[1466],{"type":521,"value":1156},{"title":19,"searchDepth":523,"depth":523,"links":1468},[],{"data":1470,"body":1471,"excerpt":-1,"toc":1477},{"title":19,"description":1164},{"type":513,"children":1472},[1473],{"type":516,"tag":517,"props":1474,"children":1475},{},[1476],{"type":521,"value":1164},{"title":19,"searchDepth":523,"depth":523,"links":1478},[],{"data":1480,"body":1481,"excerpt":-1,"toc":1487},{"title":19,"description":1188},{"type":513,"children":1482},[1483],{"type":516,"tag":517,"props":1484,"children":1485},{},[1486],{"type":521,"value":1188},{"title":19,"searchDepth":523,"depth":523,"links":1488},[],{"data":1490,"body":1491,"excerpt":-1,"toc":1497},{"title":19,"description":1190},{"type":513,"children":1492},[1493],{"type":516,"tag":517,"props":1494,"children":1495},{},[1496],{"type":521,"value":1190},{"title":19,"searchDepth":523,"depth":523,"links":1498},[],{"data":1500,"body":1501,"excerpt":-1,"toc":1507},{"title":19,"description":1085},{"type":513,"children":1502},[1503],{"type":516,"tag":517,"props":1504,"children":1505},{},[1506],{"type":521,"value":1085},{"title":19,"searchDepth":523,"depth":523,"links":1508},[],{"data":1510,"body":1511,"excerpt":-1,"toc":1517},{"title":19,"description":1088},{"type":513,"children":1512},[1513],{"type":516,"tag":517,"props":1514,"children":1515},{},[1516],{"type":521,"value":1088},{"title":19,"searchDepth":523,"depth":523,"links":1518},[],{"data":1520,"body":1522,"excerpt":-1,"toc":1533},{"title":19,"description":1521},"E-commerce AI-Ready Data Framework",{"type":513,"children":1523},[1524],{"type":516,"tag":517,"props":1525,"children":1526},{},[1527,1529],{"type":521,"value":1528},"E-commerce AI-Ready Data ",{"type":516,"tag":1260,"props":1530,"children":1531},{},[1532],{"type":521,"value":109},{"title":19,"searchDepth":523,"depth":523,"links":1534},[],{"data":1536,"body":1538,"excerpt":-1,"toc":1562},{"title":19,"description":1537},"The new data standard for e-commerce stores operating across multiple markets.\nPL, DE, CZ, RO – one framework, full business visibility.\nWatch the recording on demand.A dedicated webinar for managers, directors, owners, and C-level executives",{"type":513,"children":1539},[1540],{"type":516,"tag":517,"props":1541,"children":1542},{},[1543,1545,1548,1553,1554,1557],{"type":521,"value":1544},"The new data standard for e-commerce stores operating across multiple markets.\n",{"type":516,"tag":1280,"props":1546,"children":1547},{},[],{"type":516,"tag":1284,"props":1549,"children":1550},{},[1551],{"type":521,"value":1552},"PL, DE, CZ, RO – one framework, full business visibility.",{"type":521,"value":1320},{"type":516,"tag":1280,"props":1555,"children":1556},{},[],{"type":516,"tag":1284,"props":1558,"children":1559},{},[1560],{"type":521,"value":1561},"A dedicated webinar for managers, directors, owners, and C-level executives",{"title":19,"searchDepth":523,"depth":523,"links":1563},[],{"data":1565,"body":1566,"excerpt":-1,"toc":1572},{"title":19,"description":830},{"type":513,"children":1567},[1568],{"type":516,"tag":517,"props":1569,"children":1570},{},[1571],{"type":521,"value":830},{"title":19,"searchDepth":523,"depth":523,"links":1573},[],{"data":1575,"body":1576,"excerpt":-1,"toc":1582},{"title":19,"description":832},{"type":513,"children":1577},[1578],{"type":516,"tag":517,"props":1579,"children":1580},{},[1581],{"type":521,"value":832},{"title":19,"searchDepth":523,"depth":523,"links":1583},[],{"data":1585,"body":1587,"excerpt":-1,"toc":1602},{"title":19,"description":1586},"Google Analytics 4 GA4 BigQuery - 9 challenges to surprise you in data analysis",{"type":513,"children":1588},[1589],{"type":516,"tag":517,"props":1590,"children":1591},{},[1592,1594,1600],{"type":521,"value":1593},"Google Analytics 4 ",{"type":516,"tag":1595,"props":1596,"children":1597},"span",{},[1598],{"type":521,"value":1599},"GA4",{"type":521,"value":1601}," BigQuery - 9 challenges to surprise you in data analysis",{"title":19,"searchDepth":523,"depth":523,"links":1603},[],{"data":1605,"body":1607,"excerpt":-1,"toc":1620},{"title":19,"description":1606},"When interacting with Google Analytics 4 GA4 data in BigQuery, we managed to encounter various difficulties that are worth knowing about in advance, before many hours have passed on a detective attempt to overcome them.",{"type":513,"children":1608},[1609],{"type":516,"tag":517,"props":1610,"children":1611},{},[1612,1614,1618],{"type":521,"value":1613},"When interacting with Google Analytics 4 ",{"type":516,"tag":1595,"props":1615,"children":1616},{},[1617],{"type":521,"value":1599},{"type":521,"value":1619}," data in BigQuery, we managed to encounter various difficulties that are worth knowing about in advance, before many hours have passed on a detective attempt to overcome them.",{"title":19,"searchDepth":523,"depth":523,"links":1621},[],{"data":1623,"body":1625,"excerpt":-1,"toc":1637},{"title":19,"description":1624},"Google Analytics 4 GA4 BigQuery - why you should use it?",{"type":513,"children":1626},[1627],{"type":516,"tag":517,"props":1628,"children":1629},{},[1630,1631,1635],{"type":521,"value":1593},{"type":516,"tag":1595,"props":1632,"children":1633},{},[1634],{"type":521,"value":1599},{"type":521,"value":1636}," BigQuery - why you should use it?",{"title":19,"searchDepth":523,"depth":523,"links":1638},[],{"data":1640,"body":1642,"excerpt":-1,"toc":1655},{"title":19,"description":1641},"Exporting Google Analytics 4 GA4 data to Google BigQuery allows you to protect us against data loss and bypass many limits and restrictions waiting for us in the panel or API connection.",{"type":513,"children":1643},[1644],{"type":516,"tag":517,"props":1645,"children":1646},{},[1647,1649,1653],{"type":521,"value":1648},"Exporting Google Analytics 4 ",{"type":516,"tag":1595,"props":1650,"children":1651},{},[1652],{"type":521,"value":1599},{"type":521,"value":1654}," data to Google BigQuery allows you to protect us against data loss and bypass many limits and restrictions waiting for us in the panel or API connection.",{"title":19,"searchDepth":523,"depth":523,"links":1656},[],1789409437342]