Skafe Cosméticos: Shopify Commerce and Systems Integration

Skafe Cosméticos is a Brazilian hair-care brand with several product lines, including Keraform, Keramax, and Natutrat. I built and maintain its Shopify platform, which brings the corporate website, the product catalog, and the online store together at skafe.com.br. I also built the commerce infrastructure behind the storefront: the integrations between Shopify, Bling ERP, and shipping providers.

Skafe Cosméticos homepage at skafe.com.br

Project overview and business context

A brand like this has to do three jobs on one site: present the company, document a large product range, and sell online. The business also runs on systems outside Shopify. Bling ERP handles invoicing and stock, and carriers handle delivery. The goal was a storefront that works for customers and keeps those systems in step without manual re-entry.

Role: Full-Stack Developer and E-commerce Engineer.

My responsibilities

  • Customizing and maintaining the Shopify storefront with Liquid and JavaScript.
  • Designing the integration architecture between Shopify, Bling ERP, and shipping providers.
  • Building and running the integrations on Cloudflare Workers, D1, and Queues.
  • Automating inventory, invoicing, shipping labels, and fulfillment tracking.
  • Improving responsive design, product discovery, and purchase UX.

Storefront development

The storefront is a customized Shopify theme written in Liquid and JavaScript, built to be responsive across devices. One theme serves the corporate pages, the catalog, and the store.

Catalog versus store

Not every product Skafe makes is sold online, so the storefront separates two things:

  • Catalog. An institutional reference of the product range, where visitors read product information, composition, directions for use, and technical details. Every catalog entry offers "Ver informações".
  • Online store. The subset of products that can be bought. These entries are marked "Disponível na loja" and add a "Comprar na loja" action.

Products that aren't sold online stay documented and findable without ever showing a purchase path that leads nowhere.

Backend architecture and integrations

Shopify does not talk to Bling or to carriers on its own, so I put an integration layer between them on Cloudflare:

  • Workers run the integration logic between Shopify, Bling ERP, and shipping providers (including Frenet) over their REST APIs.
  • D1 stores the integration's data.
  • Queues move work off the request path, so calls to external APIs run asynchronously.

E-commerce automation

The integration layer automates four operational tasks that would otherwise be handled by hand across systems:

  • Inventory synchronization
  • Invoice processing
  • Shipping label generation
  • Fulfillment tracking

Order data moves between Shopify, Bling ERP, and shipping providers without manual handoffs.

UX and conversion optimization

I improved the storefront through responsive layouts, better product discovery, and conversion-focused UX changes. The catalog and store split above is part of this: customers can browse the full range and see clearly what they can buy. I don't publish conversion figures for this project.

Technical challenges and solutions

Several systems, each with its own data. Shopify, Bling ERP, and the shipping providers each hold part of an order's story. I put an integration layer between them on Workers so each system can stay focused on its job.

Slow or unreliable external calls. ERP and carrier APIs shouldn't block the storefront or each other. Queues keep that work asynchronous and outside the request path.

Informational products next to purchasable ones. One site had to document the whole range while selling only part of it. Separating the catalog from the online store, with explicit labels on each entry, makes the difference clear to customers.