Available for projects & agency overflow · Quick reply, from the person who does the work

E-commerce development for CBD, hemp and vaping

In this sector the first architectural decision is neither the theme nor the catalogue: it is the ability to keep taking payments the day a provider closes the merchant account. Everything else is built after that.

Describe my issue Send a message

Taking payment: the real subject, settled at design time

Many payment providers classify this activity as high risk and can close a merchant account very quickly, sometimes with no useful notice. The consequence is technical rather than commercial: you need two independent means of taking payment from the outset, carried by two separate providers, with the integration code isolated behind a shared interface instead of letting a module dictate how checkout behaves.

In practice that means the checkout only knows abstract operations — authorise, capture, refund, notify — and an adapter translates them for whichever provider is active. Switching then becomes a configuration change, applied without rebuilding the checkout, without breaking orders mid-authorisation and without losing the history of transactions already settled.

Advertising is closed to you, so acquisition is technical

Ad networks and price comparison engines refuse these products. Sending a standard product feed to a shopping engine risks suspension of the merchant account, and sometimes the loss of all the history attached to it. Visibility therefore rests on organic search and on channels you own outright, which shifts where the investment goes.

The practical result is that the budget which elsewhere would fund the ad auction has to fund catalogue structure, rendering speed and depth of content instead. A legible category tree, range pages that are genuinely written, internal links between flavours and strengths, and controlled response times on faceted pages: those are the jobs that produce traffic, not tuning an advertising conversion tag.

Regulatory attributes the catalogue must carry

  • Age verification: sale to minors is prohibited, with a check on entry, a confirmation at checkout and retention of the proof.
  • Delta-9-tetrahydrocannabinol content: only varieties at or below 0.30 % are permitted; the level, the variety and the batch analysis belong on the product record.
  • Analysis document: the batch certificate must be attached to the reference and viewable, not emailed on request.
  • E-liquid nicotine: capped at 20 mg/ml by the European tobacco products directive.
  • Volumes: refill bottles limited to 10 ml, prefilled cartridges to 2 ml.
  • Prior notification to the health agency before placing on the market: notification status governs whether a reference may go live.
  • Geographic restrictions: legality varies by country, and the block must live in the carrier calculation, not only in the terms of sale.

Flavour by strength by volume: a regulated matrix

One flavour exists in several strengths and several volumes. Every cell of that matrix has its own stock, price, barcode and notification status. It is the combinatorial problem fashion faces with size and colour, plus one extra constraint: a single combination may be prohibited while its neighbours are permitted.

So a regulatory attribute cannot live at parent product level. Nicotine strength, volume, notification status and the identifier of the analysis document must be carried by the variant, filterable on the front end and auditable in bulk. Otherwise updating a range means reopening every page by hand, and the first mistake goes unnoticed until an inspection.

On these catalogues I also set a publication rule: a variant whose regulatory attribute is empty does not display. A missing reference is better than a live one with no stated level and no document.

What I handle around this sector

Frequently asked questions

Do you really need two payment providers from day one?
In this sector, yes. A merchant account can be closed quickly and with no immediate remedy. Having a second contract already signed and an adapter already written turns a business shutdown into a configuration change.
Can a product feed be sent to a comparison engine or ad network?
These products are refused by the main networks and submitting them usually triggers suspension. Where a site also sells items outside that scope, the only workable approach is to exclude the affected references from the feed strictly, filtering at source rather than by hand.
How should age verification be implemented?
With a check on entry to the site, an explicit confirmation at checkout, and a timestamped record of that confirmation attached to the order. A banner dismissed with one click leaves no usable evidence.
Where should batch analysis results be stored?
Attached to the reference, with the batch number, the analysis date and a document viewable from the product page. A file sent on request goes missing, and makes it impossible to trace which batch matched which order.
How do you block sales to a country where the product is not permitted?
By applying the restriction in the delivery method calculation and in the basket check, per product category. A clause in the terms of sale prevents nothing technically and still lets parcels leave that should not.

Describe your need in one minute

A few targeted questions so I can reply with an estimate rather than another questionnaire.

type
existant
stack (facultatif)
utilisateurs (facultatif)
echeance (facultatif)
Please provide an email or a phone number so I can get back to you.

Please provide an email or a phone number so I can get back to you.