[{"data":1,"prerenderedAt":638},["ShallowReactive",2],{"navigation_docs":3,"-publishing-websites":178,"-publishing-websites-surround":633},[4,25,50,81,112,133,158],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":16,"path":17,"stem":18,"icon":19},"Concepts","\u002Fgetting-started\u002Fconcepts","1.getting-started\u002F2.concepts","i-lucide-book-a",{"title":21,"path":22,"stem":23,"icon":24},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":6},"Workspace","i-lucide-users","\u002Fworkspace","2.workspace",[31,36,41,45],{"title":32,"path":33,"stem":34,"icon":35},"Account","\u002Fworkspace\u002Faccount","2.workspace\u002F1.account","i-lucide-circle-user",{"title":37,"path":38,"stem":39,"icon":40},"Teams","\u002Fworkspace\u002Fteams","2.workspace\u002F2.teams","i-lucide-building-2",{"title":42,"path":43,"stem":44,"icon":27},"Members and roles","\u002Fworkspace\u002Fmembers-and-roles","2.workspace\u002F3.members-and-roles",{"title":46,"path":47,"stem":48,"icon":49},"Projects","\u002Fworkspace\u002Fprojects","2.workspace\u002F4.projects","i-lucide-folder-kanban",{"title":51,"icon":52,"path":53,"stem":54,"children":55,"page":6},"Catalogue","i-lucide-package","\u002Fcatalogue","3.catalogue",[56,61,66,71,76],{"title":57,"path":58,"stem":59,"icon":60},"Products","\u002Fcatalogue\u002Fproducts","3.catalogue\u002F1.products","i-lucide-box",{"title":62,"path":63,"stem":64,"icon":65},"Offers","\u002Fcatalogue\u002Foffers","3.catalogue\u002F2.offers","i-lucide-tag",{"title":67,"path":68,"stem":69,"icon":70},"Brands","\u002Fcatalogue\u002Fbrands","3.catalogue\u002F3.brands","i-lucide-badge-check",{"title":72,"path":73,"stem":74,"icon":75},"Merchants","\u002Fcatalogue\u002Fmerchants","3.catalogue\u002F4.merchants","i-lucide-store",{"title":77,"path":78,"stem":79,"icon":80},"Custom attributes","\u002Fcatalogue\u002Fcustom-attributes","3.catalogue\u002F5.custom-attributes","i-lucide-list-plus",{"title":82,"icon":83,"path":84,"stem":85,"children":86,"page":6},"Scraping","i-lucide-scan-search","\u002Fscraping","4.scraping",[87,92,97,102,107],{"title":88,"path":89,"stem":90,"icon":91},"Connect Scrape Admin","\u002Fscraping\u002Fconnect-scrape-admin","4.scraping\u002F1.connect-scrape-admin","i-lucide-plug",{"title":93,"path":94,"stem":95,"icon":96},"Scrape profiles","\u002Fscraping\u002Fscrape-profiles","4.scraping\u002F2.scrape-profiles","i-lucide-scan-text",{"title":98,"path":99,"stem":100,"icon":101},"Schedules and configuration","\u002Fscraping\u002Fschedules-and-configuration","4.scraping\u002F3.schedules-and-configuration","i-lucide-sliders-horizontal",{"title":103,"path":104,"stem":105,"icon":106},"Sync and reconcile","\u002Fscraping\u002Fsync-and-reconcile","4.scraping\u002F4.sync-and-reconcile","i-lucide-refresh-cw",{"title":108,"path":109,"stem":110,"icon":111},"Webhooks","\u002Fscraping\u002Fwebhooks","4.scraping\u002F5.webhooks","i-lucide-webhook",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":6},"Growing the catalogue","i-lucide-sprout","\u002Fgrowing-the-catalogue","5.growing-the-catalogue",[118,123,128],{"title":119,"path":120,"stem":121,"icon":122},"Imports","\u002Fgrowing-the-catalogue\u002Fimports","5.growing-the-catalogue\u002F1.imports","i-lucide-import",{"title":124,"path":125,"stem":126,"icon":127},"Repair queues","\u002Fgrowing-the-catalogue\u002Frepair-queues","5.growing-the-catalogue\u002F2.repair-queues","i-lucide-wrench",{"title":129,"path":130,"stem":131,"icon":132},"Wrong URL flow","\u002Fgrowing-the-catalogue\u002Fwrong-url-flow","5.growing-the-catalogue\u002F3.wrong-url-flow","i-lucide-route",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":6},"Publishing","i-lucide-globe","\u002Fpublishing","6.publishing",[139,143,148,153],{"title":140,"path":141,"stem":142,"icon":135},"Websites","\u002Fpublishing\u002Fwebsites","6.publishing\u002F1.websites",{"title":144,"path":145,"stem":146,"icon":147},"Website content","\u002Fpublishing\u002Fwebsite-content","6.publishing\u002F2.website-content","i-lucide-languages",{"title":149,"path":150,"stem":151,"icon":152},"SEO templates","\u002Fpublishing\u002Fseo-templates","6.publishing\u002F3.seo-templates","i-lucide-search",{"title":154,"path":155,"stem":156,"icon":157},"Analytics","\u002Fpublishing\u002Fanalytics","6.publishing\u002F4.analytics","i-lucide-chart-line",{"title":159,"icon":160,"path":161,"stem":162,"children":163,"page":6},"Developers","i-lucide-code","\u002Fdevelopers","7.developers",[164,169,173],{"title":165,"path":166,"stem":167,"icon":168},"Public API","\u002Fdevelopers\u002Fpublic-api","7.developers\u002F1.public-api","i-lucide-code-xml",{"title":170,"path":171,"stem":172,"icon":52},"Listings client","\u002Fdevelopers\u002Flistings-client","7.developers\u002F2.listings-client",{"title":174,"path":175,"stem":176,"icon":177},"Click tracking","\u002Fdevelopers\u002Fclick-tracking","7.developers\u002F3.click-tracking","i-lucide-mouse-pointer-click",{"id":179,"title":140,"body":180,"description":625,"extension":626,"links":627,"meta":628,"navigation":629,"path":141,"seo":630,"stem":142,"__hash__":632},"docs\u002F6.publishing\u002F1.websites.md",{"type":181,"value":182,"toc":606},"minimark",[183,196,203,219,223,228,305,308,312,323,330,334,344,348,358,364,367,374,378,416,425,438,442,456,460,474,477,488,494,501,575,582,585,599],[184,185,186,187,191,192,195],"p",{},"A website is a comparison site that reads one project through the ",[188,189,190],"a",{"href":166},"public API",". A project can have several websites, each with its own token, languages, price display and editorial content. Open ",[193,194,140],"strong",{}," in the project sidebar.",[184,197,198],{},[199,200],"img",{"alt":201,"src":202},"The Websites list","\u002Fscreenshots\u002Fwebsites.png",[184,204,205,206,210,211,214,215,218],{},"The list shows each website's name, domain and languages (default first), the token ending (",[207,208,209],"code",{},"pwt_…"," plus the last four characters), when the token last made an API call, and the clicks of the last 7 days. A ",[193,212,213],{},"Previous token active"," badge appears after a rotation while the old token still works. A ",[193,216,217],{},"Needs rotation"," badge means the website has no usable token yet; rotate it to get one.",[220,221,222],"note",{},"Adding, changing, rotating and deleting websites is limited to team owners and admins. Other members can open the list and the detail page read-only.",[224,225,227],"h2",{"id":226},"add-a-website","Add a website",[229,230,231,236,243,279,283,286,290],"steps",{},[232,233,235],"h3",{"id":234},"click-add-website","Click Add website",[184,237,238,239,242],{},"Fill in the ",[193,240,241],{},"New website"," form:",[244,245,246,261,267,273],"ul",{},[247,248,249,252,253,256,257,260],"li",{},[193,250,251],{},"Domain"," (required): the website's hostname without ",[207,254,255],{},"https:\u002F\u002F",", for example ",[207,258,259],{},"snuspris.no",".",[247,262,263,266],{},[193,264,265],{},"Name",": a display name.",[247,268,269,272],{},[193,270,271],{},"Default language",": the locale served when a request names none or one the website does not serve. Empty uses the project locale.",[247,274,275,278],{},[193,276,277],{},"Additional languages",": other locales the website serves. Leave empty for a single-language website. You can change this later.",[232,280,282],{"id":281},"click-create-website","Click Create website",[184,284,285],{},"The website is created and its token is shown in a dialog.",[232,287,289],{"id":288},"copy-the-token","Copy the token",[184,291,292,293,296,297,300,301,304],{},"The dialog ",[193,294,295],{},"Website token"," shows the token once. Copy it before you click ",[193,298,299],{},"I have stored the token",", because only a hash is stored and it cannot be shown again. Store it as a server-side secret of the website, for example in an environment variable, and never ship it to the browser. The dialog also shows a ready-to-run ",[207,302,303],{},"curl"," command to try it.",[184,306,307],{},"If you lose a token, rotate it to get a new one.",[224,309,311],{"id":310},"rotate-a-token","Rotate a token",[184,313,314,315,318,319,322],{},"Choose ",[193,316,317],{},"Rotate token"," in the row menu, or on the website's detail page under ",[193,320,321],{},"API access",". After you confirm, a new token is issued and shown once, like at creation.",[184,324,325,326,329],{},"The previous token keeps working for ",[193,327,328],{},"24 hours",", so the website can be redeployed with the new one without downtime. After that, only the new token is accepted.",[224,331,333],{"id":332},"delete-a-website","Delete a website",[184,335,314,336,339,340,343],{},[193,337,338],{},"Delete"," in the row menu, or ",[193,341,342],{},"Delete website"," at the bottom of the detail page. The website's token stops working immediately and its content and click log are deleted. The catalogue itself is not touched.",[224,345,347],{"id":346},"website-detail","Website detail",[184,349,350,351,354,355,260],{},"Click a website to open it. The page has two tabs, ",[193,352,353],{},"General"," and ",[188,356,357],{"href":145},"Content",[184,359,360],{},[199,361],{"alt":362,"src":363},"Website detail, General tab","\u002Fscreenshots\u002Fwebsite-detail.png",[232,365,353],{"id":366},"general",[184,368,369,354,371,373],{},[193,370,251],{},[193,372,265],{}," as when you created it.",[232,375,377],{"id":376},"languages","Languages",[244,379,380,385],{},[247,381,382,384],{},[193,383,271],{},": served when a request asks for no locale or one the website does not serve. Empty uses the project locale.",[247,386,387,389,390,393,394,397,398,401,402,405,406,408,409,412,413,415],{},[193,388,277],{},": add locales such as ",[207,391,392],{},"en"," or ",[207,395,396],{},"sv-SE",". A request for ",[207,399,400],{},"nb-NO"," is served ",[207,403,404],{},"nb"," when only ",[207,407,404],{}," is listed, and the other way around. Locales are normalised, so ",[207,410,411],{},"nb-no"," becomes ",[207,414,400],{},". A website can serve up to 20 languages in total.",[184,417,418,419,421,422,424],{},"If you remove a language that already has content, a warning says the content is kept but no longer served. Add the language again to serve it, or delete it on the ",[193,420,357],{}," tab. See ",[188,423,144],{"href":145}," for how texts fall back between languages.",[184,426,427,428,431,432,431,435,437],{},"Translations of brand, merchant and product names and descriptions are separate: the catalogue languages are set under ",[193,429,430],{},"Settings"," > ",[193,433,434],{},"Configuration",[193,436,277],{},", and a website serves a selection of them.",[232,439,441],{"id":440},"prices","Prices",[244,443,444,450],{},[247,445,446,449],{},[193,447,448],{},"Prices include VAT",": the website shows \"incl. VAT\" (in its language) next to prices. When off, nothing is said about VAT. This flag only labels prices; it does not recalculate them.",[247,451,452,455],{},[193,453,454],{},"Hide zero prices",": on by default. Offers priced 0 are never shown: they do not count as the lowest price, in averages or in totals, and a product with only such offers is not listed.",[232,457,459],{"id":458},"links","Links",[184,461,462,465,466,469,470,473],{},[193,463,464],{},"Redirect domain"," is the domain of the outbound ",[207,467,468],{},"\u002Fgo"," links the API hands out. Leave it empty to use the platform's own domain. A domain of your own, such as ",[207,471,472],{},"go.shop.example",", keeps the links on brand and hides the platform. Below the field you see an example link built with the current value.",[184,475,476],{},"There are two ways to serve a redirect domain:",[244,478,479,482],{},[247,480,481],{},"Point it at this platform with a CNAME record to the platform's host.",[247,483,484,485,487],{},"Serve ",[207,486,468],{}," yourself from the website's own frontend with the redirect client.",[184,489,490,491,493],{},"See ",[188,492,174],{"href":175}," for the details of both.",[184,495,496,497,500],{},"After you save a new redirect domain, the platform asks the domain who serves it and shows the result as a badge, with the time of the last check. Click ",[193,498,499],{},"Check now"," to repeat the check.",[502,503,504,517],"table",{},[505,506,507],"thead",{},[508,509,510,514],"tr",{},[511,512,513],"th",{},"Badge",[511,515,516],{},"Meaning",[518,519,520,531,541,551,565],"tbody",{},[508,521,522,528],{},[523,524,525],"td",{},[193,526,527],{},"Points to this instance",[523,529,530],{},"The platform serves the links on this domain.",[508,532,533,538],{},[523,534,535],{},[193,536,537],{},"Self-hosted redirect client",[523,539,540],{},"A redirect client of this website serves the links and reports clicks in batches.",[508,542,543,548],{},[523,544,545],{},[193,546,547],{},"Unknown server",[523,549,550],{},"Something answers on the domain, but not this platform or a redirect client of this website.",[508,552,553,558],{},[523,554,555],{},[193,556,557],{},"Not reachable",[523,559,560,561,564],{},"Nothing answered on ",[207,562,563],{},"https:\u002F\u002F\u003Cdomain>\u002Fgo\u002F_ping"," (DNS, TLS or timeout).",[508,566,567,572],{},[523,568,569],{},[193,570,571],{},"Not checked",[523,573,574],{},"The domain has not been checked yet.",[576,577,578,579,581],"tip",{},"The check is informational only. Links use the domain whatever the result, and changing the domain never breaks links handed out earlier, because the platform's own ",[207,580,468],{}," keeps accepting them.",[232,583,321],{"id":584},"api-access",[184,586,587,588,591,592,595,596,598],{},"Shows the token ending, when it last made a call (",[193,589,590],{},"Last API call",", or \"Never\") and ",[193,593,594],{},"Clicks (7 days)",". ",[193,597,317],{}," is here too.",[184,600,601,602,605],{},"Click ",[193,603,604],{},"Save changes"," to apply changes to the General tab; the button is enabled once you have changed something.",{"title":607,"searchDepth":608,"depth":608,"links":609},"",2,[610,616,617,618],{"id":226,"depth":608,"text":227,"children":611},[612,614,615],{"id":234,"depth":613,"text":235},3,{"id":281,"depth":613,"text":282},{"id":288,"depth":613,"text":289},{"id":310,"depth":608,"text":311},{"id":332,"depth":608,"text":333},{"id":346,"depth":608,"text":347,"children":619},[620,621,622,623,624],{"id":366,"depth":613,"text":353},{"id":376,"depth":613,"text":377},{"id":440,"depth":613,"text":441},{"id":458,"depth":613,"text":459},{"id":584,"depth":613,"text":321},"Register the comparison websites that read your project, manage their tokens, languages, price display and redirect domain.","md",null,{},{"icon":135},{"title":140,"description":631},"Add a website, copy its API token once, rotate or delete it, and configure languages, VAT, zero prices and the redirect domain.","juVbSiUlYZ66YSlOrBaQiyQ8VDwiC5xUJcqDOimy6aQ",[634,636],{"title":129,"path":130,"stem":131,"description":635,"icon":132,"children":-1},"Step through offers whose page no longer exists, find each product at the merchant and fix the URL or mark it gone.",{"title":144,"path":145,"stem":146,"description":637,"icon":147,"children":-1},"Edit the texts and terms of each website per language without redeploying it.",1792430223305]