CVR-opslag i Shopify

Shopify lader dig ikke frit tilføje felter til checkout, så CVR-opslaget skal ligge et andet sted. Den nemmeste løsning er et CVR-felt i kurven, som slår virksomheden op og sender data med ordren som kurv-attributter.

Hvad kan lade sig gøre?

StedMuligt?Hvordan
KurvJa, alle planerKurv-attributter + lidt JavaScript i temaet
KundeoprettelseJa, alle planerEkstra felt i registreringsformularen
CheckoutBegrænsetCheckout UI extensions, primært på Shopify Plus

1. CVR-felt i kurven

Læg felterne ind i din kurv-sektion. Attributten form="cart" knytter dem til kurvformularen (i Dawn-temaet har den id'et cart). Alt med navnet attributes[...] følger med ordren og vises i admin under Yderligere oplysninger.

liquid
{%- comment -%} I cart-sektionen, fx sections/main-cart-footer.liquid {%- endcomment -%}
<div class="cart-attribute">
  <label for="cvr-number">CVR-nummer</label>
  <input id="cvr-number" type="text" inputmode="numeric" maxlength="8"
         name="attributes[CVR]" form="cart"
         value="{{ cart.attributes.CVR }}">
</div>
<div class="cart-attribute">
  <label for="cvr-company">Firmanavn</label>
  <input id="cvr-company" type="text"
         name="attributes[Firmanavn]" form="cart"
         value="{{ cart.attributes.Firmanavn }}">
</div>
<p id="cvr-status" aria-live="polite"></p>

2. Slå virksomheden op med JavaScript

API'et tillader kald fra alle domæner (CORS), så scriptet kan kalde det direkte fra butikken uden en app eller proxy.

javascript
// assets/cvr-lookup.js, loaded on the cart page
const cvrInput = document.getElementById('cvr-number');
const companyInput = document.getElementById('cvr-company');
const status = document.getElementById('cvr-status');

cvrInput?.addEventListener('input', async () => {
  const cvr = cvrInput.value.replace(/\D/g, '');
  status.textContent = '';
  if (cvr.length !== 8) return;

  try {
    const res = await fetch(`https://apicvr.dk/api/v1/${cvr}`);
    if (!res.ok) {
      status.textContent = 'CVR not found';
      return;
    }
    const company = await res.json();
    companyInput.value = company.name;
    status.textContent = `${company.name}, ${company.address}, ${company.zipcode} ${company.city}`;
  } catch (err) {
    // Leave the fields for the customer to fill in.
  }
});

3. CVR ved kundeoprettelse

Har du B2B-kunder med konto, kan du også spørge efter CVR-nummeret ved oprettelse. Felter med navnet customer[note][...] gemmes i kundens note.

liquid
{%- comment -%} I kunderegistreringsformularen (customers/register) {%- endcomment -%}
<label for="RegisterForm-CVR">CVR-nummer</label>
<input id="RegisterForm-CVR" type="text" inputmode="numeric" maxlength="8"
       name="customer[note][CVR]">
Selve checkout kan kun udvides med Checkout UI extensions, og for informations-, leverings- og betalingstrinnet kræver det som udgangspunkt Shopify Plus. Extensions skal have netværksadgang slået til for at kunne kalde et eksternt API.

Husk reklamebeskyttelse

Bruger du firmadata fra kunderne til markedsføring, så tjek feltet protected i API-svaret. Se reklamebeskyttelse.

Ofte stillede spørgsmål

Skal jeg installere en app?

Nej. Kurv-felterne og scriptet ligger direkte i dit tema, og API'et kræver ingen nøgle.

Hvor finder jeg CVR-nummeret på ordren?

Kurv-attributter vises på ordren i Shopify admin under Yderligere oplysninger og følger med i ordre-webhooks og API'et som note_attributes.

Kan jeg tilføje CVR-feltet i selve checkout?

Kun med Checkout UI extensions, som til informations- og betalingstrinnet som udgangspunkt kræver Shopify Plus.