
Foto av Luke Heibert på Unsplash
De flesta webbutiker vi pratar med hade inte planerat att sälja på tre ställen. Det bara blev så. Shopify kom först, sedan en WooCommerce-sajt för ett andra varumärke, sedan en marknadsplats eller en B2B-portal som mejlar över ett kalkylark på tisdagar.
Var och en har sin egen orderlista. Var och en har sin egen uppfattning om vad en order är. Och den som packar är den som håller alla tre i huvudet.
Vad en orderkanal är
I Zippendo kommer varje order in via en orderkanal, och en kanal är anslutningen till ett källsystem. Det finns fyra sorter:
- Shopify. Du installerar appen och ordrarna kommer in när de läggs. Expedieringar och spårningsnummer går tillbaka åt andra hållet.
- WooCommerce. Samma sak via vårt plugin, plus fraktpriser i realtid och ombud i kassan.
- Egen kanal. Din egen webbutik, ditt affärssystem eller din koppling till en marknadsplats skickar ordrar till oss via en signerad webhook.
- Manuell. Inget källsystem alls. Ordrar som du skriver in själv, eller som en importör skapade när du flyttade över från något annat.
Oavsett vilken det är ser ordern likadan ut när den når fraktsidan. Det är hela poängen med abstraktionen.
Den egna kanalen, eftersom alla frågar
Om vi inte har någon integration för ditt system får du en kanal med en egen signeringshemlighet och en URL för inleverans. Ditt system postar ordern, signerar innehållet med HMAC-SHA256 och sätter en topic-header för skapad, uppdaterad eller annullerad.
Verifieringen är fail-closed. Ingen hemlighet, ingen signatur eller en signatur som inte matchar, så får du en 401 i stället för att vi gissar vad du menade.
Det fält som betyder mest är externalId, ditt eget ID för ordern. Vi använder det som nyckel. Skicka samma order två gånger, så uppdaterar den andra den första i stället för att skapa en tvilling. Så när din loop för nya försök körs tre gånger klockan två på natten för att vårt svar var långsamt får du ändå bara en order.
Det finns också en REST-endpoint, om det är krångligt att pusha webhooks från ditt håll. Samma regler, förutom att ett dubblerat externalId ger en 409 i stället för en uppdatering, eftersom du där bad om att skapa något i stället för att synka det.
Där kanalerna slutar spela roll
När ordrarna väl har kommit in är kanalen mest bara en etikett. Fraktregler bryr sig inte om var en order kom ifrån om du inte säger åt dem att göra det. Skriv regeln en gång, den här vikten till den transportören, det här landet till ett ombud, så gäller den för alla.
På två ställen spelar kanalen fortfarande roll. Expedieringen går tillbaka till det system som ordern kom från, så Shopify får sin expediering och Woo får sitt spårningsnummer. Och om du använder Varumärken hör en kanal till exakt ett varumärke, vilket är hur en andra webbutik får sitt eget namn på följesedeln utan att behöva ett andra konto.
Den del som är riktigt irriterande
Orderstatusar betyder inte samma sak på alla plattformar, och ingen mappning i världen löser det helt. Det vi gör är att vägra låta en status gå bakåt: om en försändelse redan har nått ett senare läge kan en sen uppdatering inte dra den bakåt. Det förhindrar det värsta. Det får inte tre plattformar att vara överens om vad ”under behandling” betyder, och vi har slutat låtsas att det skulle kunna det.
Om du driver mer än en webbutik i mer än en webbläsarflik är det här den del av Zippendo som är byggd för dig. Anslut den andra kanalen och se om packbänken märker någon skillnad.