← Tillbaka till kundcase
Indivd AB · HubSpot · 2026

De största affärerna tog längst tid att offerera. Nu är de ett enda dokument.

Indivd säljer butiksanalys till detaljhandelskedjor där inga två butiker köper samma upplägg. En offert för ett nät på fyrtio butiker innebar flera dokument som sattes ihop för hand och hölls i synk för hand. I dag konfigurerar säljaren en gång och offerten prissätter varje butik på egna villkor, i HubSpot, på en licens utan CPQ.

Tre offerter, en förhandlingIhopsatta för hand, synkade för hand.
Offert 17 butiker · nya kameror
Offert 233 butiker · befintliga kameror
Offert 31 butik · endast hårdvara
En offert · 41 butikerVarje butik behåller sin egen nivå, sitt hårdvaruupplägg och sin utrullningsfas.
5 → 500

butiker i en offert. Butiksnätets storlek avgör inte längre hur snabbt ni kan sälja till det.

1

dokument per affär i stället för en mapp. En siffra, en underskrift, inget som hålls i synk för hand.

0

licensuppgraderingar och inget extra verktyg. Det körs på den Sales Professional-licens som redan är betald.

I drift  med riktiga kunder sedan 3 augusti 2026.

01Det här ändrades

Fem saker en säljchef får som inte fanns tidigare.

Samma katalog, samma säljare, samma licens. Det som ändrades är hur många dokument en affär kräver, och hur mycket av den någon behöver skriva in.

Skala

Ett dokument per affär

Ett nät på tvåhundra butiker är en offert, inte en mapp full av dem.

Arbete

Beskriv det en gång

Säljaren konfigurerar en produkt en gång och väljer butikerna. Systemet skriver varje rad efter det.

Risk

Inget kan gå isär

Pris, omfattning och utrullningsplan genereras från samma rader, så dokumentet kan inte motsäga sig självt.

Kontroll

Villkor som vd:n äger

Version, datum och länk till de allmänna villkoren kommer från en enda post. Ingen säljare kan ändra dem i en offert.

Kostnad

Ingen licensuppgradering

Ingen Revenue Hub, inget extra verktyg, och varje konfiguration stannar i CRM:et för rapportering och förnyelser.

02Se hur det fungerar

En konfiguration in. Fyrtio produktrader ut.

Det riktiga kortet, återskapat på sidan och i en loop. En produkt konfigureras, butikerna väljs och affären fyller sig själv. När man sparar en andra gång stäms raderna av i stället för att dupliceras.

En säljare öppnar affären, väljer en produkt, anger nivå, fas och hårdvaruupplägg och markerar de butiker den gäller. När man sparar skrivs en produktrad per butik. Att spara igen duplicerar ingenting: det skapar det som saknas, arkiverar det som tagits bort och lämnar resten orört.

Dokument att sätta ihop, per affär
1 / 3
−2och inget kvar att hålla i synk för hand
Offertbyggaren · i affären Körs
01 Affär · Example Retail AB · 41 butiksposter kopplade
Produktrader i affären 0 rader
01Drottninggatannya kameror · fas 1Journeys150 €
02Mall of Scandinavianya kameror · fas 1Journeys150 €
03Nordstanbefintliga kameror · fas 2Journeys150 €
04Emporiabefintliga kameror · fas 2Categories800 €
05Frölunda Torgendast hårdvaraStarter50 €
·36 butiker tillvar och en med egen nivå, eget upplägg och egen fasBlandat·
+Setup BT · 7 butikerbefintliga kameror · ingen installationEngång0 €
En produktrad per butikNy sparning stämmer avInget sparat än
Regeln som gör det säkert att spara igencard_id, och diffen bakom den

Varje produktrad bär id:t för den konfiguration som skapade den. Att spara igen är en avstämning, inte en ny insättning: backend skapar det som saknas, arkiverar det som tagits bort och lämnar resten orört. Lägg till tre butiker vecka sex så tar offerten upp dem.

Varför det spelar roll affärsmässigt: en säljare kan omförhandla en pågående affär utan att någon bygger om offerten för hand, och utan de tysta dubbletter som gör en totalsumma fel.

Det kortet vägrar sparafyra valideringar, speglade i motorn

Minst en butik. En fas, så snart affären innehåller en prenumeration. Antal låst till ett för allt som räknas per butik, med ett enda godkänt undantag. Rabatter mellan 0 och 100, och en uttrycklig volymrabatt på varje återkommande rad, där noll är ett giltigt svar.

/* Non hardware products are locked at quantity 1 because they are counted per
   location: quantity 2 would charge the same store twice. Enterprise is the one
   approved exception, matched by id and by name so it survives a rename and a
   recreation of the product. */
const QUANTITY_FREE_PRODUCT_IDS   = ['47257531981'];
const QUANTITY_FREE_PRODUCT_NAMES = ['enterprise'];

Låsningen gällde 193 av de 198 produkterna i biblioteket, och den fanns på två ställen: kortet vägrar spara och motorn ger samma varning. Att bara rätta gränssnittet hade gett en offert som sparades utan problem och sedan klagade på sig själv.

03I er storlek

Tvåhundra butiker är inte fyrtio butiker gånger fem.

Två värden in, resten är aritmetik och inte ett löfte. Det sveper av sig självt. Dra i reglaget om ni vill se er egen siffra.

41butiker i nätet
Olika upplägg de köper

Ett upplägg är ett eget sätt att köpa: nya kameror och installation, befintliga kameror, endast hårdvara, en djupare servicenivå. En riktig katalog har dussintals.

Före · för handEfter · en konfiguration
3 dokument att sätta ihop och hålla i synk
→
1 dokument
3 totalsummor som köparen måste lägga ihop
→
1 totalsumma
0 butiker prissatta var för sig i dokumentet
→
41 butiker, var och en på egna villkor
0 butiksrader skapade utan att någon skrivit in dem
→
41 rader, skrivna av systemet
04Det som kommer ut

Dokumentet bygger sig självt och utelämnar det som inte gäller.

Ändra affärens form så byggs offerten om. Inget skrivs två gånger, och ingen rubrik visas någonsin utan sitt värde.

Affärens form

Välj en. Listan med avsnitt till höger byggs om.

Offertens delar 16 avsnitt
  • Sidhuvud, offertnummer och giltighetgenererat
  • Upprättad för, och avgenererat
  • Sammanfattninggenererat
  • Vad Indivd gör möjligtgenererat
  • Omfattninggenererat
  • Vad ni fårgenererat
  • Prissammanställning, alla butikergenererat
  • Prisdetaljer, per butikgenererat
  • Driftsättningsplangenererat
  • Faktureringsuppgiftergenererat
  • Frågor ert team kan ställagenererat
  • Vad våra kunder sägergenererat
  • Där Indivd används i daggenererat
  • Nästa steggenererat
  • Godkännande och allmänna villkorgenererat
  • Bilaga, valfri hårdvaragenererat
Prissättning, per butik

Återkommande och engångsbelopp hålls isär

Rabatter visas som en egen rad i stället för att gömmas i en totalsumma, inom varje fas.

Utrullningsplan

Genererad från samma rader

Land, paket, fas, hårdvaruupplägg och antal butiker, framtaget från de rader som ger priserna.

Godkännande

Bundet till en namngiven version

Underskriften binder den här offerten, tilläggsvillkoren och de allmänna villkoren i en namngiven version och ett datum.

Hur mallen får sitt innehålloch den begränsning i HubSpot som tvingade fram det

En offertmall kan bara läsa det som är kopplat till offerten, och egna egenskaper på själva Quote-objektet kommer fram tomma. Därför blev affären ytan som renderas: motorn skriver färdiga HTML-block i 14 affärsegenskaper och mallen infogar dem. Mallen står för layout och typografi och innehåller ingen affärslogik alls.

{% if DEAL.render_pricing_html %}
  <div class="ey">PRICING DETAILS
    {% if DEAL.flag_hardware_only != "true" %} · PER LOCATION {% endif %}
  </div>
  {{ DEAL.render_pricing_html|safe }}
{% endif %}
Var de juridiska villkoren finnsen inställningstabell utan databas

HubDB ingick inte i licensen, så version, datum och länk för de allmänna villkoren ligger på en enda dedikerad företagspost som används som inställningstabell. Den är ingen kund. Vd:n redigerar den i HubSpot, varje offert i varje affär hämtar den, och ingen säljare kan ändra villkoren i sitt eget dokument.

05Varför det byggdes

Varje produkt som HubSpot säljer för det här krävde en licens som den portalen inte har.

Sex stängda dörrar, och de sex saker som byggdes i stället. De löses en i taget. Klicka på en dörr för att styra själv.

StängdKringgången

Kodade offertmoduler

Blev allmänt tillgängliga i juni 2026 och kräver Revenue Hub Professional.

En offertmall i ett child theme, helt matad av affärsegenskaper.

StängdKringgången

Egenskaper på offerten

Egna egenskaper på Quote-objektet når aldrig det renderade dokumentet.

Allt variabelt innehåll flyttades till affären, som är kopplad och faktiskt når fram.

StängdKringgången

HubDB

Ingick inte i avtalet, och det var den naturliga platsen för de juridiska villkoren.

En dedikerad företagspost som fungerar som global inställningstabell.

StängdKringgången

Serverlösa funktioner

Inte tillgängligt i den här plattformsversionen eller på den här licensnivån.

En liten Python-tjänst på en dedikerad server, som räknar och inget annat.

StängdKringgången

Fält som köparen kan redigera

Nya CPQ stöder dem men inte kodade mallar. De två utesluter varandra.

Redigering sker i CRM:et, där den loggas, och aldrig i dokumentet.

StängdKringgången

Produktrader på en butik

Produktrader hör till affärer i HubSpots modell och kan inte hänga på en platspost.

En produktrad per produkt och butik, var och en märkt med den butik den hör till.

0 av 6 hinder kringgångna, med datan kvar i CRM:et. Noll licensuppgraderingar köpta, noll extra verktyg införda.
Hur de fyra lagren hänger ihopett diagram, i ord

Platser är poster i CRM:et, som arkiveras och aldrig raderas, så att historisk rapportering behåller sin grund. Konfigurationer är produktrader. Villkoren är en post som vd:n äger. Det enda som finns utanför HubSpot är aritmetiken, den enda del som ingen behöver söka i, filtrera eller rapportera på.

06Det som blir kvar

Offerten är ingen PDF. Den är en rad per butik.

Allt som dokumentet skriver ut stannar i CRM:et som strukturerad data. Det är den delen som fortsätter att löna sig efter underskriften.

En produktrad innehåller
ButikServicenivåFasLöptid i månaderFaktureringsstartPrisLandRabatt

Hur stor del av nätet är faktiskt i drift?

I drift i fas 133
Väntar i fas 28

Täckningen är ett filter på affären, inte en fråga till kundansvarig.

Vad fakturerar det här nätet varje månad?

Starter · 2100 €
Journeys · 334 950 €
Categories · 64 800 €
9 850 €återkommande, varje månad

Prognosen är inte längre beroende av att någon öppnar PDF:en.

När förnyas varje butik?

Fas 16 månader
Fas 230 månader

Varje butik har sin egen löptid och faktureringsstart, så förnyelsedatumet är ett fält och inte något man måste minnas. Expansion är samma rad med en senare fas.

07Det vi tar med oss

Det enkla svaret hade varit att bygga offertverktyget utanför HubSpot.

Det ger en snygg PDF och en död affärspost: inget att rapportera på, inget att förnya från, inget som nästa person kan ta över. Här stannade allt där det spelade roll, och bara aritmetiken flyttade ut.

Er portal

Bygg er egen konfigurerbara offert i HubSpot.

  • Prissatt per butik, per anläggning, per filial eller per licens, på de objekt ni redan har
  • Ingen Revenue Hub och inget extra verktyg: det här körs på Sales Professional
  • I drift hos riktiga kunder, inte en prototyp

Trettio minuter, er affär på skärmen, inga presentationsbilder.

Boka 30 minuter med Nils (öppnas i en ny flik)