E-Commerce

Bringing in-store sales into Google Ads for Rapha

Stathis Kampylis
November 4, 2026
x
min to read

Rapha, the premium cycling clothing brand, sells both online and through its own physical stores. They brought a problem to us that often impacts companies that sell products on and offline. In this case study we'll detail the solution that we provided to help them close the data gap and the learnings that we took from the project.

Background to the project

Rapha’s Bloomreach CDP recorded in-store purchases, but they never reached Google Ads. Meanwhile, Smart Bidding could only see online revenue, and ROAS reporting missed a material share of the sales that paid media influenced. This offline data gap reduced the strength and quality of their data and it was something that they were keen to fix. 

Our strategy

We built a daily batch pipeline that imports in-store purchases into Google Ads as offline conversions, with BigQuery as the transformation layer and Google Data Manager as the activation layer:

  1. Source. Bloomreach CDP exports purchase, customer profile, identity history and consent data to BigQuery.

  2. Transformation. A scheduled query rebuilds a clean conversion table in Rapha’s own Google Cloud project every morning.

  3. Activation. Google Data Manager reads from that table an hour later and imports the conversions into Google Ads.

We routed the data through BigQuery rather than sending it directly from the CDP because Google Ads offline imports needed identity resolution and consent logic that were impractical to build inside Bloomreach’s automation tools. In BigQuery, that logic is transparent, testable SQL.

Data Manager handles the upload, but the transformation determines the quality of what it uploads. The query:

  • Includes only completed in-store purchases, so online sales already measured by the Google tag are not counted twice.

  • Resolves customer identifiers, so purchases recorded against merged or superseded profiles still attach to the right customer.

  • Aggregates value at order level, so a multi-item basket is imported as one conversion with its true value.

  • Standardizes identifiers. Email, phone, name and location are trimmed, lowercased and normalized to Google’s format requirements to maximize match rates.

  • Applies consent. Checks each customer’s latest consent state and includes only opted-in customers.

‍

Rather than appending new rows, each run rebuilds a rolling 30-day window. Late-arriving and corrected transactions are picked up automatically, the import stays aligned with attribution windows, and a failed run recovers on the next execution without a manual backfill. Failures trigger automated email alerts, and we formally handed responsibility for each component to Rapha’s IT and paid media teams, with documented monitoring and recovery steps. This addresses the ownership gap that causes many offline imports to degrade quietly over time.

Results

We validated the pipeline by reconciling daily purchase volumes across Bloomreach, BigQuery and Google Ads. Throughout the validation period, the conversions imported into Google Ads matched the BigQuery output exactly, with zero variance. In-store revenue influenced by Google Ads is now measurable, supporting omnichannel ROAS reporting and allowing Smart Bidding to optimize toward total revenue rather than online sales alone.

What we learned

Building this pipeline taught us five lessons that apply to most offline data projects:

  1. Your CDP dashboard will show more conversions than Google Ads. During validation, Bloomreach’s interface reported around 25% more in-store purchases than the BigQuery export. The interface keeps updating as late events arrive, while the export only includes purchases with a usable customer identifier and marketing consent. The gap was expected, not data loss, but it causes confusion if it is not properly explained to the client. Agree on one source of truth before anyone starts comparing numbers.

  2. Respecting consent can change yesterday’s numbers. We apply each customer’s current consent state, not their consent at the time of purchase. When a customer withdraws consent, their earlier purchases drop out of later uploads, so a given day’s conversion count can fall between runs. This is the correct consent approach, which teams need to expect and not report as a data problem.

  3. For offline conversions, recoverability matters more than speed. Sending each purchase the moment it happens is tempting, but in an event-by-event setup, any event that fails is usually lost for good. We chose a daily rebuild instead: conversions reach Google Ads up to 24 hours later, but the import matches exactly and repairs itself on the next run. Bidding algorithms can wait a day for an in-store sale, but they cannot learn from one that never arrives.

  4. Consent rules enforced outside your CMP need their own governance. In this pipeline, consent is applied in BigQuery SQL, separately from the consent settings inside Bloomreach’s own activation tools. As you connect more destinations, each tends to enforce consent in its own way, and nothing keeps them in step automatically. Any business sending first-party data to ad platforms should map where each destination enforces consent and treat every policy change as a change across all of them.

  5. The ceiling is set at the till, not in the code. In-store purchases without an email address are excluded rather than uploaded with incomplete identifiers. That makes the share of transactions where staff capture an email the biggest single factor in how much in-store revenue Google Ads can see. Improving it is a retail operations change, not a data change, and it raises the ceiling for every platform at once.

With the infrastructure proven, the same foundation can now power Customer Match audiences through Data Manager, starting with excluding recent purchasers from prospecting campaigns.

Conclusion

Data Manager significantly simplifies how organizations bring first-party data into Google’s platforms. Its effectiveness, however, depends entirely on the quality of the data it receives. The organizations that benefit most will not be those that connect the greatest number of data sources, but those that build a reliable foundation: accurate tracking, correctly implemented consent, and a clear understanding of which signals drive real business outcomes.

‍

Learn more about Google Data Manager and how to make best use of it in our Insights post.

‍

You might be interested

Digital Strategy
Google Data Manager: How to Build Data Strength for AI-Powered Media
Google Data Manager: How to Build Data Strength for AI-Powered Media
Our Team
Team Spotlight - Meet Aylen, Solutions Architect
Team Spotlight - Meet Aylen, Solutions ArchitectOur Team
Data Visualization
Turning raw data into an interactive dashboard
Turning raw data into an interactive dashboard