Expertise · Industry perspective

The design system for D2C: flexible enough is enough

A fast campaign rhythm does not mean starting over every season; the key is for you to separate what can change from what must remain constant.

Quick summary

A D2C brand needs a system flexible enough to change its appearance according to campaigns without affecting the purchasing and payment flow. The most sustainable way is to use a three-tier token architecture: only overwrite the semantic layer for each topic while keeping the core components intact. Avoid creating a separate interface for each campaign, as this will become unmanageable over time.

Quick comparison
You should choose this direction when
  • running a dense campaign, wants to change the appearance quickly and safely
  • a marketing team continuously building landing pages, needing a self-service block set
Not needed when.
  • each campaign creates a separate interface version, accumulating debt
  • Excessive flexibility leads to losing the core identity across campaigns.
Quick glance
Commonly used industries
D2C brandretail

Direct-to-consumer (D2C) brands thrive on continuous campaign rhythms: launching new collections, seasonal sales, special days, and holidays. The question Sinh Vũ hears most from D2C brand owners is: how flexible should the design system be to keep up without turning into an unmanageable chaos? The answer is not "the more flexible, the better." The answer is: flexible where it matters, rigid where it counts.

Two layers need to be separated from the start

All digital design systems have two types of decisions. One is perceptual decisions (the sensory layer): colors, typography, imagery, tone. This is where the brand expresses its personality and differentiates each campaign. The second is functional decisions: page layout, cart flow, checkout steps. This is where users complete what they need to do.

The most common mistake for D2C brands is mixing these two layers. Each Tet sale or summer sale creates a completely separate interface set, with different colors and flows. As a result, after three seasons, the codebase has three sets, none of which are consistent, and the technical team spends many hours figuring out where the errors are.

Alla Kholmatova's principle in the book Design Systems clearly states: a good system allows for variations at the perceptual layer while keeping functional patterns stable. By separating these two layers, you can run campaigns quickly without disrupting what is already working well.

Three-tier token architecture: the key to flexibility

Tokens (definitions of design values such as color, font size, spacing) are organized into three layers:

  • Primitive level: Lists all raw values in the color palette, for example, green 500, orange 300. This level does not change.
  • Semantic level (or alias): Assigns design intent to raw values, for example, "primary button color" points to green 500. This is the level you override when running a new campaign: "primary button color" changes to orange 300 for the Tet sale, with no need to modify a line of code in the component.
  • Component level: Components use semantic tokens, so they automatically recognize new ones when the semantic layer changes.

Nathan Curtis from EightShapes calls semantic tokens the place that carries "contextual design intent." Just touching this layer, the entire campaign interface becomes consistent without missing anything.

Brad Frost in The Many Faces of Themeable Design Systems calls this architecture the secret to theming, meaning changing the appearance of a campaign or sub-brand without having to rebuild the system.

When to need a self-service toolkit for the marketing team

If the marketing team builds landing pages a few times a month but always has to wait for technical support, the campaign pace will slow down regardless of how good the token system is.

Only need a token theme: Suitable when the technical team builds landing pages from existing templates, with campaigns primarily focused on color and image changes, without needing significantly different layouts between seasons.

Need an additional self-service block library: This is suitable when the marketing team needs to assemble custom landing pages for each campaign without technical assistance. The block library consists of pre-defined page sections by token, allowing the marketing team to select and assemble without touching the code.

Conditions for the self-service block to operate smoothly: the block must be thoroughly vetted before release. If the marketing team is allowed to assemble everything without limits, brand identity will gradually dilute with each campaign.

Payment flow: no-touch zone

This is a principle that Sinh Vũ strictly adheres to in all D2C projects. The payment flow is the final step, where actual revenue is generated. Any change in the interface here, even a small one, can confuse customers or erode trust at the most critical moment.

The campaign has strong variations on previous pages: campaign homepage, category page, product page. However, from the cart page to order confirmation, the interface remains consistent throughout the year, not seasonally.

Semantic tokens carry design intent based on context, separated from the original values. Changing a campaign only requires touching this layer.

Nathan Curtis, Naming Tokens in Design Systems (EightShapes)

Common mistakes and how to avoid them

  • Each campaign creates a separate interface: After a few seasons, no one knows which version is still in use and which has been discarded. To avoid this: all campaigns run on a core component set, only overriding semantic tokens.
  • Inserting hard colors into components: when developers directly code color values into components instead of referencing tokens, each theme change requires manual code adjustments, which can easily be overlooked. To avoid this: establish an internal guideline that components should only use tokens, not direct base values.
  • Over-flexibility: allows changes to everything, making the brand unrecognizable after several campaigns. To avoid this: define core identity elements that must not change regardless of the campaign.
  • Neglecting the alignment between design and code: The design team uses Figma, while the technical team uses code; if both sides do not synchronize tokens, the campaign will run very differently from the mockup. Sinh Vũ uses Figma Code Connect to ensure both sides align from the start.

Sinh Vũ's viewpoint

For D2C projects, Sinh Vũ builds tokens in the DTCG format (Design Token Community Group, a standard for design tools and code to read the same token file). The marketing team is empowered to change the semantic layer for each campaign, while the core component set and purchase flow remain unchanged. The rhythm of launching new campaigns is no longer dependent on the technical schedule, but it is also not completely unanchored as the tokens and block set define the limits of variation.

The flexible level sufficient for high-paced D2C is: the ability to change the appearance according to the campaign within hours, not days, without writing an additional line of code beyond the token layer.

The tool brings back.

Decision checklist

Topic: How flexible should the design system be for high-campaign D2C brands. Sinh Vũ guide, sinhvu.com

0 more than 6 items

Select each item you find appropriate, then print or save as PDF to take with you.

Sign indicating that you should take action
Questions to answer before deciding

If you have marked most of the signs above, this is the time to discuss in more detail. Sinh Vũ can help you review and propose a direction.

References

Brad Frost, The Many Faces of Themeable Design Systems. Nathan Curtis, Naming Tokens in Design Systems (EightShapes). Alla Kholmatova, Design Systems (Smashing Magazine). Practical experience from Sinh Vũ with D2C brands in Vietnam.

Frequently asked questions

Does flexibility according to the campaign mean having to redo the design system every year?

No. Flexibility in the true sense means you only change colors, fonts, and images according to the theme, while the component set and payment flow remain unchanged. A properly built system can serve dozens of campaigns without needing to rebuild the foundation.

If the marketing team doesn't know how to code, can they still build campaign landing pages themselves?

Yes, if the system has a self-service block library. The marketing team can assemble predefined blocks according to the campaign tokens without needing to touch the code. The condition is that the block set must be designed and approved in advance, not created spontaneously each season.

Does the payment flow need to change its interface according to the campaign?

Typically, it is not advisable. The payment flow is the most critical stage in the order lifecycle; changing the interface here easily creates technical risks and can lose customer trust. Sinh Vũ recommends keeping this flow outside the campaign's creative variations, only changing screens before the order confirmation step.

← Back to Digital design system