In my previous article, I walked through a general Python data quality workflow using a public retail dataset.
That project focused on a reusable pattern:
raw data
→ schema mapping
→ validation
→ cleaning
→ SQLite export
→ quality report
→ benchmark evidence
This article is about a different kind of repository.
Instead of adding another version to the general ETL starter, I built a public Shopify-style e-commerce API reporting case study.
Previous article:
Running a Real Retail Dataset Through a Python Data Quality Workflow
The runnable open-source project behind that article is:
https://github.com/OnerGit/data-quality-etl-starter
That repository proves the general workflow capability: messy CSV, Excel, JSON, API-style data, validation, cleaning, exports, reports, analytics-ready outputs, BI-ready outputs, AI-ready preparation, and public dataset benchmark evidence.
This article is about a different kind of repository:
https://github.com/OnerGit/shopify-api-reporting-workflow
This new repository is not another version of data-quality-etl-starter.
It is a public portfolio case study for a Shopify-style e-commerce API reporting workflow.
For a fully runnable open-source data workflow project, see data-quality-etl-starter. This new repository is a public portfolio case study for a Shopify-style e-commerce API reporting workflow. The runnable implementation is maintained privately as a reusable commercial delivery asset.
👁 Shopify-style API reporting case study overview
Why build a Shopify-style reporting case study?
A general data workflow project is useful, but real client work is usually vertical.
A small e-commerce team does not usually ask for "a data quality ETL starter."
They ask for something more specific:
Can you export Shopify orders every week?
Can you clean product and customer data?
Can you generate an Excel sales report?
Can you turn API data into CSV files?
Can you create product-level or customer-level summaries?
Can you prepare a local reporting database?
Can you help us move from REST-style exports toward GraphQL-style API data?
Those requests are narrower than a full data platform.
They are also more concrete than a generic portfolio demo.
That is why I built shopify-api-reporting-workflow as a vertical case study. It applies the same workflow thinking from my general data quality project to a more realistic e-commerce reporting scenario.
The core workflow idea is:
Shopify-style API data
→ pagination
→ field mapping
→ normalized reporting tables
→ validation
→ CSV / Excel / SQLite exports
→ Markdown report
The project is intentionally scoped around reporting workflow design, not around building a full Shopify app.
Public repo vs private runnable implementation
The most important boundary in this repository is the public/private split.
The public repository includes:
README.md
NOTICE.md
docs/
sample_outputs/
screenshots/
It shows:
- the case-study problem;
- the reporting workflow shape;
- public-safe sample output previews;
- screenshots from the private runnable workflow;
- implementation boundary notes;
- limitations;
- REST-to-GraphQL migration notes.
It does not include:
- source code;
- tests;
- scripts;
- dependency files;
- Docker files;
- complete mock data;
- complete field mappings;
- GraphQL query templates;
- production connector code;
- credentials;
- tokens;
- store domains;
- client data.
That is intentional.
The runnable implementation exists locally and privately as a reusable commercial delivery asset. The public repository is designed to explain the workflow, output expectations, design boundaries, and implementation judgment without exposing reusable private code or client-sensitive material.
This is different from data-quality-etl-starter.
data-quality-etl-starter is a runnable open-source project.
shopify-api-reporting-workflow is a public case-study repository.
Both are useful, but they serve different purposes.
v0.1: mock REST-style API reporting workflow
The v0.1 private implementation models a mock REST-style e-commerce API reporting workflow.
It uses fake local fixtures only. It does not call the real Shopify API.
The workflow shape is:
mock REST-style API fixtures
→ paginated orders extraction
→ products / customers extraction
→ field mapping
→ order/customer flattening
→ line item expansion
→ validation
→ CSV / Excel / SQLite export
→ summary tables
→ Markdown report
→ sanitized public outputs
👁 v0.1 mock REST-style workflow run
The goal of v0.1 was to prove the reporting workflow shape.
In e-commerce reporting, orders are often nested. A single order may contain customer information, shipping fields, fulfillment fields, tax fields, discounts, and line items.
That data is not always easy to use directly in a spreadsheet.
A practical reporting workflow usually needs to split the data into tables such as:
orders
order_line_items
customers
products
sales_summary_by_month
sales_summary_by_product
customer_order_summary
That is the main idea behind v0.1.
The workflow demonstrates how paginated API-style order data can be normalized into reporting-friendly outputs.
The public repository includes sanitized preview files such as:
report_preview.md
orders_cleaned_preview.csv
sales_summary_by_month_preview.csv
sales_summary_by_product_preview.csv
customer_order_summary_preview.csv
👁 Public-safe sample output previews
Those previews are intentionally small. They show output shape, not full production coverage.
The private workflow also has test evidence. The public screenshot is included only to show that the private implementation was checked locally; it does not expose the implementation itself.
👁 Private workflow test evidence
Why CSV, Excel, and SQLite outputs?
For many small e-commerce reporting requests, the first deliverable is not a data warehouse.
It is usually something more practical:
CSV files for import or review
Excel workbook for store operators
SQLite-style local database for lightweight handoff
Markdown report for validation notes
That is why v0.1 focuses on export formats that are easy to inspect.
A store operator may want an Excel workbook.
A technical client may want CSV files.
A developer or analyst may want a local SQLite database.
👁 SQLite-style reporting tables preview
The workflow also produces a Markdown report preview with extraction, validation, output, and limitation notes.
👁 Sanitized Markdown report preview
The important point is not the file format itself. The important point is the handoff:
What data was extracted?
What was normalized?
What warnings were found?
What summaries were generated?
What files were produced?
What assumptions need to be checked?
That is the kind of reporting workflow clients can review before moving into heavier BI infrastructure.
v0.2: GraphQL-shaped mock workflow and cursor pagination
The v0.2 update adds a GraphQL-shaped mock workflow.
This matters because Shopify's REST Admin API is now a legacy API, and new public apps should be designed around GraphQL Admin API.
The v0.2 workflow still does not call Shopify.
It uses local fake fixtures shaped like GraphQL responses.
The mock input structure includes:
edges
node
cursor
pageInfo
That makes the case study more realistic than a simple REST-style mock export.
The v0.2 workflow simulates cursor-style pagination and keeps the same reporting output concept:
fake GraphQL-shaped order data
→ cursor-style pagination simulation
→ GraphQL-style field path mapping
→ normalized reporting tables
→ validation notes
→ sanitized GraphQL report preview
→ REST-to-GraphQL migration summary
👁 v0.2 GraphQL-shaped mock workflow run
The public repository includes:
report_preview_graphql.md
docs/graphql_workflow_summary.md
docs/rest_to_graphql_mock_migration_summary.md
Again, this is not a production GraphQL Admin API client.
It does not include real GraphQL queries, OAuth, tokens, real store domains, access scopes, or production connector code.
The purpose of v0.2 is to show that the reporting workflow design is aware of the GraphQL direction and cursor-style pagination pattern.
Why model GraphQL-shaped responses?
A REST-style mock workflow is easy to understand, but it is not enough for a Shopify-aware reporting case study.
A real Shopify implementation would need to handle the current Admin API direction, approved access scopes, secure credentials, cursor pagination, rate limits, retries, and store-specific field mapping.
The public repository does not try to solve all of that.
Instead, it models the shape of the problem:
GraphQL connection response
→ cursor pagination state
→ nested node extraction
→ field path mapping
→ normalized reporting tables
That is useful because reporting work depends heavily on the shape of the source data.
If the source response shape changes, the mapping layer changes.
If pagination changes, the extraction layer changes.
If the reporting definitions change, the summary layer changes.
The case study makes those boundaries visible without publishing a production connector.
What the public repo shows
The public repository shows the case study through documentation, sample outputs, and screenshots.
The public material demonstrates:
- a v0.1 REST-style mock workflow run;
- a v0.2 GraphQL-shaped mock workflow run;
- private test evidence;
- public-safe sample outputs;
- Excel-style workbook preview;
- Markdown report preview;
- SQLite-style table preview;
- implementation boundary notes;
- limitations;
- workflow mapping to real client scenarios.
The public sample outputs include:
report_preview.md
report_preview_graphql.md
orders_cleaned_preview.csv
sales_summary_by_month_preview.csv
sales_summary_by_product_preview.csv
customer_order_summary_preview.csv
The screenshots are evidence from the private runnable workflow and sanitized public preview files.
They are included to show workflow behavior and output shape, not to expose the implementation.
This distinction is important.
A screenshot can show that a workflow exists and what it produces. It should not expose credentials, tokens, real store domains, client data, private paths, complete mock fixtures, or source code from the private implementation.
What is intentionally out of scope
This repository is intentionally not:
- a Shopify app;
- a production Shopify connector;
- a public runnable implementation;
- a complete GraphQL Admin API client;
- an OAuth implementation;
- a live-store integration;
- a webhook service;
- a full data warehouse;
- a BI dashboard;
- a SaaS product;
- a low-code or n8n workflow;
- an AI agent workflow.
It does not include:
- real Shopify tokens;
- store domains;
- client data;
- raw API responses;
- complete field mappings;
- production GraphQL query templates;
- production connector code;
- complete mock datasets;
- private implementation paths.
A real Shopify reporting project would need to confirm many things before implementation:
- required Shopify objects;
- access scopes;
- authentication approach;
- pagination behavior;
- rate limits and retries;
- reporting metric definitions;
- output file requirements;
- customer data privacy requirements;
- store-specific product, variant, discount, refund, tax, shipping, fulfillment, and channel fields.
The public repository does not hide those requirements. It documents the boundary.
How this maps to real client work
This type of workflow maps to practical e-commerce reporting requests.
Examples include:
Shopify order export to CSV
API to Excel reporting workbook
product and customer cleanup
order line item expansion
sales summary by month
sales summary by product
customer order summary
API-to-database workflow
GraphQL migration-aware reporting workflow
The value is not just extracting data.
The value is structuring the workflow so another person can understand it:
extract
→ map
→ validate
→ normalize
→ summarize
→ export
→ report
For a small reporting automation project, this can be a useful first stage before investing in a larger dashboard, warehouse, or SaaS tool.
The workflow also creates a safer technical discussion.
Instead of jumping straight into implementation, the project encourages questions like:
- Which Shopify objects matter?
- Which fields should be included?
- How should refunds and discounts be counted?
- Should reporting use gross sales or net sales?
- Are taxes and shipping included?
- Which output format is easiest to review?
- Should the workflow produce a local database?
- What data should be excluded for privacy reasons?
Those questions are part of the engineering work.
What I would validate next
The next step would not be to publish the private implementation.
Instead, I would validate the case study against more realistic reporting requirements.
Areas to validate next include:
- order-level and line-item-level metric definitions;
- refund and cancellation handling;
- product variant mapping;
- discount and tax treatment;
- shipping and fulfillment status fields;
- customer privacy handling;
- incremental sync assumptions;
- GraphQL rate-limit and retry strategy;
- client-specific Excel workbook layout;
- whether the final handoff should be CSV, Excel, SQLite, PostgreSQL, or BI-ready tables.
I would also keep the public/private boundary in place.
The public repo should remain a case-study asset.
The private implementation should remain reusable, adaptable, and safe for commercial delivery.
Closing summary
data-quality-etl-starter shows the general data workflow pattern.
shopify-api-reporting-workflow applies the same thinking to a vertical e-commerce reporting scenario.
The first project proves the reusable data quality workflow.
The second project shows how that workflow thinking can be narrowed into a Shopify-style API reporting case study with public-safe documentation, sanitized output previews, REST-style workflow evidence, and GraphQL-shaped pagination awareness.
It is not a Shopify app.
It is not a production connector.
It is not a public runnable package.
It is a transparent portfolio case study for a practical reporting workflow: API-shaped e-commerce data into validated, normalized, reporting-ready outputs.
For further actions, you may consider blocking this person and/or reporting abuse
